題目:
基準時間限制: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...