51Nod 1005 大數加法

2021-08-02 07:46:48 字數 1160 閱讀 2945

題目:

基準時間限制:1 秒 空間限制:131072 kb 分值: 0

給出2個大整數a,b,計算a+b的結果。

input

第1行:大數a

第2行:大數b

(a,b的長度 <= 10000 需注意:a b有可能為負數)

output

輸出a + b

input示例

68932147586

468711654886

output示例

537643802472

其實就是模擬我們在草稿紙上進行加減運算的過程,關鍵點在**中給出了注釋,**使用了一些物件導向的性質:

#include 

#include

#include

using namespace std;

struct bignumber else

length = str.length();

}// 兩個大整數相加的函式

string &add(bignumber &other) else

str[i] = '0' + (str[i]-'0')%10;}}

// 一正一負相加,即為兩數絕對值相減,符號為絕對值大的那個

} else else

if(str[i] > other.str[i])

}for(int i = str.length()-1; i >= 0; i--) }}

// 清除結果前面多餘的 0

int zeronum;

for(zeronum = 0; zeronum < str.length(); zeronum++)

}str.erase(str.begin(), str.begin()+zeronum);

// 如果結果是負數,那麼開頭加負號

if(!this->ispos)

// 還需要注意的是如果本身答案就是 0 的情況

if(str.length() == 0)

return

str;

}string str;

int length;

// 是否為正數

bool ispos;

};int main()

51Nod 1005 大數加法

今天遇見一道細節問題特別多的題,寫得我眼疼,題本身不難,難得是他的細節問題繁多,需要考慮的情況也甚多,稍有不慎就側漏了,哈哈。題的思路也很清晰,就是將最後的結果的正負的符號分離出來,剩下的就是高精度的加減法了,利用字串處理即可,效率可以很高很高,有多高呢?自己感覺吧!題 給出2個大整數a,b,計算a...

51nod 1005 大數加法

給出2個大整數a,b,計算a b的結果。input 第1行 大數a 第2行 大數b a,b的長度 10000 需注意 a b有可能為負數 output 輸出a binput示例 68932147586 468711654886output示例 537643802472純粹的模擬,主要分一下幾種情況 ...

51nod 1005 大數加法

1005 大數加法 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 給出2個大整數a,b,計算a b的結果。input 第1行 大數a 第2行 大數b a,b的長度 10000 需注意 a b有可能為負數 output 輸出a binput示例 68932147586 4...