大整数加法
题目描述
求两个不超过200位的非负整数的和
输入
第一行为一个整数t,表示有t组数据。接下来有2t行,每两行表示一组数据。 对于一组数据,每行是一个不超过200位的非负整数,没有多余的前导0。
输出
对于每组数据,输出一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
1
22222222222222222222
33333333333333333333
样例输出
55555555555555555555
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main(){
string a,b;
cin>>a>>b;
stack<int>s;
int len_a=a.length(),len_b=b.length();
len_a--;
len_b--;
int k=0,sum;
while(len_a>=0||len_b>=0){
if(len_a>=0&&len_b>=0)
sum=a[len_a]-'0'+b[len_b]-'0'+k;
else if(len_a>=0)
sum=a[len_a]-'0'+k;
else sum=b[len_b]-'0'+k;
s.push(sum%10);
k=sum/10;
len_a--;
len_b--;
}
if(k!=0)
s.push(k);
while (!s.empty())
{
cout<<s.top();
s.pop();
}
cout<<endl;
return 0;
}