zcmu-1181(大数相加)
生活随笔
收集整理的這篇文章主要介紹了
zcmu-1181(大数相加)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1181: a+b(不同于第一題)
Time Limit: 10 Sec??Memory Limit: 128 MBSubmit: 920??Solved: 303
[Submit][Status][Web Board]
Description
求a+b的值
Input
第一行一個整數T,表示接下來有T行
每行兩個整數是a,b,(0<=a,b<=10^10000)
Output
輸出值
Sample Input
2100 10010000000000 10000000000Sample Output
20020000000000HINT
Source
解析:大數的運算通常要運用字符串,很平常的運算規則一樣,都是從最后的位開始加減。
代碼:
#include<iostream> #include<string> using namespace std;// 實現大數相加 結果存放在num中void bigIntergerAdd(string &num, string add) {int goBit = 0; // 存放進位// 先交換下順序 加數的位數要比較少if (num.length() < add.length()) {string tmp = num;num = add;add = tmp;}string tmp (num.length() - add.length(), '0');add = tmp + add;// 利用string的+號特性 不采用逆序相加法int len1 = num.length(), len2 = add.length();for (int i = len1 -1 ; i>= 0; --i) {int tmp = ((num[i] - '0') + (add[i] - '0') + goBit) ;num[i] = tmp% 10 + '0';goBit = tmp/10;}// 特殊情況處理if (goBit != 0)num.insert(0, string(1, (char)goBit +'0'));cout<<num<<endl; } int main() {int t;string s1;string result;cin>>t;for(int i=1; i<=t; i++){cin>>s1>>result;bigIntergerAdd(result, s1);}return 0; }總結
以上是生活随笔為你收集整理的zcmu-1181(大数相加)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zcmu-1986
- 下一篇: C++ 程序运行后的内存模型