输入2个大正整数(长度可能达到1000位),求两者之和。
输入格式:
测试数据有多组,处理到文件尾。每组测试数据输入两个正整数A和B。
输出格式:
对于每组测试,在一行上输出A+B的结果。
输入样例:
2222222222 44444444444
输出样例:
46666666666
#include<iostream>
#include<list>
#include<string>
using namespace std;
list<int>bigaddlist(list<int>la,list<int>lb){
list<int>lc;
list<int>::iterator it1,it2;
it1=la.begin(),it2=lb.begin();
int carry=0;
while(it1!=la.end()||it2!=lb.end()){
int c=carry;
if(it1!=la.end()){
c=c+*it1,it1++;
}
if(it2!=lb.end()){
c=c+*it2;
it2++;
}
carry=c/10;
lc.push_front(c%10);
}
if(carry>0)lc.push_front(carry);
return lc;
}
int main()
{
string s,t;
while(cin>>s>>t){
list<int>la,lb,lc;
for(int i=0;i<s.size();i++){
la.push_front(s[i]-'0');
}
for(int j=0;j<t.size();j++){
lb.push_front(t[j]-'0');
}
lc = bigaddlist(la,lb);
list<int>::iterator it;
for(it=lc.begin();it!=lc.end();it++){
cout<<*it;
}
cout<<endl;
}
return 0;
}