HDU-1753

這個(gè)事實(shí)上就是高精度加法的模板題。
所謂高精度加法睹酌,就是在數(shù)字過(guò)大的情況下权谁,將數(shù)字看做是數(shù)組,數(shù)組中每個(gè)值只存一位憋沿。然后對(duì)兩個(gè)數(shù)組進(jìn)行加法計(jì)算旺芽。
也就是說(shuō),原本的加法是對(duì)兩個(gè)數(shù)相加辐啄,而高精度加法是對(duì)兩個(gè)數(shù)組相加采章。
原理呢,就是大家小學(xué)時(shí)候?qū)W的豎式運(yùn)算则披,模擬那個(gè)過(guò)程來(lái)做就行了共缕。
那么在這道題目中,模擬的過(guò)程就是:把位對(duì)齊(個(gè)位對(duì)個(gè)位士复,十位對(duì)十位图谷,翩活。。便贵。)菠镇,然后逐位相加,最后進(jìn)位承璃。
思路很簡(jiǎn)單利耍,就是代碼比較難碼。
相信我盔粹,這題自己從頭到尾寫完的話你的碼力會(huì)有很大的提升的隘梨。
這里的話習(xí)慣性會(huì)使用一個(gè)結(jié)構(gòu)體來(lái)模擬一個(gè)大整數(shù)。不過(guò)由于你們還沒(méi)開(kāi)始學(xué)面向?qū)ο缶幊滔衔耍@里就只使用結(jié)構(gòu)體+函數(shù)來(lái)做這件事情:

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;

// 大整數(shù)結(jié)構(gòu)體 
struct BigInt
{
    int A[405]; // 整數(shù)部分轴猎。A[0]為個(gè)位,A[1]為十位进萄,以此類推 
    int B[405]; // 小數(shù)部分捻脖。B[i]為小數(shù)點(diǎn)后第i+1位。
    
    // 初始化 
    void init()
    {
        memset(A,0,sizeof(A));
        memset(B,0,sizeof(B));
    } 
    
    // 將字符串轉(zhuǎn)化為數(shù)字串中鼠,并劃分開(kāi)整數(shù)部分和小數(shù)部分 
    void Input(char *s,int len)
    {
        // 找小數(shù)點(diǎn) 
        int dpos=0;
        while((dpos<len)&&(s[dpos]!='.'))dpos++;
        
        // 還原整數(shù)部分
        for(int i=1;dpos-i>=0;i++)
        {
            A[i-1]=s[dpos-i]-'0';
        } 
        
        // 還原小數(shù)部分
        for(int i=1;dpos+i<len;i++)
        {
            B[i-1]=s[dpos+i]-'0';
        } 
    }
    
    // 將另一個(gè)大整數(shù)結(jié)構(gòu)體加進(jìn)來(lái) 
    void Add(BigInt &p)
    {
        // 直接相加 
        for(int i=0;i<405;i++)
        {
            A[i]+=p.A[i];
            B[i]+=p.B[i];
        }
        
        // 然后做進(jìn)位修正
        int d=0;    // 用來(lái)存儲(chǔ)進(jìn)位
        for(int i=404;i>=0;i--)
        {
            B[i]+=d;
            d=B[i]/10;
            B[i]%=10;
        } 
        for(int i=0;i<405;i++)
        {
            A[i]+=d;
            d=A[i]/10;
            A[i]%=10;
        }
    }
    
    // 輸出大整數(shù) 
    void Print()
    {
        // 先找到最高位和最低位可婶,把前綴零和后綴零砍掉 
        int ATop=404;
        int BTop=404;
        while((ATop>=0)&&(A[ATop]==0))ATop--;
        while((BTop>=0)&&(B[BTop]==0))BTop--;
        
        // 整數(shù)部分為0的時(shí)候需要輸出0,這里需要對(duì)此進(jìn)行修正
        if(ATop==-1)ATop=0;
        
        for(int i=ATop;i>=0;i--)
        {
            printf("%d",A[i]);
        } 
        
        // 如果沒(méi)有小數(shù)部分的話就不需要輸出小數(shù)點(diǎn)了援雇,所以要進(jìn)行判定 
        if(BTop!=-1)
        {
            printf(".");
            for(int i=0;i<=BTop;i++)
            {
                printf("%d",B[i]);
            }
        }
        
        printf("\n");
    }
};

char sa[405],sb[405];

int main()
{
    BigInt a,b;
    while(~scanf("%s%s",sa,sb))
    {
        a.init();
        b.init();
        a.Input(sa,strlen(sa));
        b.Input(sb,strlen(sb));
        a.Add(b);
        a.Print();
    }
    return 0;
}

看完代碼之后矛渴,自己試著靠自己寫一遍吧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末熊杨,一起剝皮案震驚了整個(gè)濱河市曙旭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晶府,老刑警劉巖桂躏,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異川陆,居然都是意外死亡剂习,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門较沪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鳞绕,“玉大人,你說(shuō)我怎么就攤上這事尸曼∶呛危” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵控轿,是天一觀的道長(zhǎng)冤竹。 經(jīng)常有香客問(wèn)我拂封,道長(zhǎng),這世上最難降的妖魔是什么鹦蠕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任冒签,我火速辦了婚禮,結(jié)果婚禮上钟病,老公的妹妹穿的比我還像新娘萧恕。我一直安慰自己,他們只是感情好肠阱,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布票唆。 她就那樣靜靜地躺著,像睡著了一般辖所。 火紅的嫁衣襯著肌膚如雪惰说。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天缘回,我揣著相機(jī)與錄音,去河邊找鬼典挑。 笑死酥宴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的您觉。 我是一名探鬼主播拙寡,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼琳水!你這毒婦竟也來(lái)了肆糕?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤在孝,失蹤者是張志新(化名)和其女友劉穎诚啃,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體私沮,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡始赎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仔燕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片造垛。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晰搀,靈堂內(nèi)的尸體忽然破棺而出五辽,到底是詐尸還是另有隱情,我是刑警寧澤外恕,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布杆逗,位于F島的核電站俄周,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏髓迎。R本人自食惡果不足惜峦朗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望排龄。 院中可真熱鬧波势,春花似錦、人聲如沸橄维。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)争舞。三九已至凛忿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間竞川,已是汗流浹背店溢。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留委乌,地道東北人床牧。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像遭贸,于是被迫代替她去往敵國(guó)和親戈咳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容