两个大数字相加
参照HPUOJ1163题:
题目描述
给定两个整数A和B,让你求出A+B的值。
输入
第一行输入一个整数T,代表有T组测试数据。
每组数据占两行,第一行输入一个整数A,第二行输入一个整数B。
注:1<=T<=30,1<=A,B<=10666666。
输出
对每组数据,输出A+B的最后结果。
样例输入
1
233333333333333333333333333333333333333
666666666666666666666666666666666666666
样例输出
899999999999999999999999999999999999999
代码:
- #include <iostream>
- #include <cstring>
- using namespace std;
- char a[1000000];
- char b[1000000];
- int c[1000000],d[1000000],e[1000000];
- int main()
- {
- int i,k,j,q,w,r;
- cin>>r;
- while(r--)
- {
- memset(c,0,sizeof(c));
- memset(d,0,sizeof(d));
- memset(e,0,sizeof(e));
- cin>>a>>b;
- j=0;
- q=strlen(a);
- w=strlen(b);
- k=q>w?q:w;
- for(i=q-1;i>=0;i--)
- {
- c[j]=a[i]-'0';
- j++;
- }
- j=0;
- for(i=w-1;i>=0;i--)
- {
- d[j]=b[i]-'0';
- j++;
- }
- for(i=0;i<k;i++)
- e[i]=c[i]+d[i];
- for(i=0;i<k;i++)
- {
- if(e[i]>9)
- {
- e[i]-=10;
- e[i+1]++;
- }
- }
- for(i=k;i>=0;i--)
- {
- if(i==k && e[k]==0) continue;
- cout<<e[i];
- }
- cout<<endl;
- }
- return 0;
- }