题目描述比利经常会碰到超大整数的加法运算,而普通的计算器上无法进行。因此他想你帮他写一个程序来计算结果。
输入输入数据有多组。首先输入一个整数T,表示有T组输入。
每组输入两个大整数,并用空格隔开。每个整数最多1000位。没有负数输入。
输出对于每组输入,输出两个整数的和,单独占一行。
样例输入2
1 2
112233445566778899 998877665544332211
样例输出3
1111111111111111110
#include<bits/stdc++.h>
using namespace std;
char a[1010],w[1010],b[1010];
char c[1010];
int main(){
int t,i,j,k=0,g,h;
cin>>t;
while(t--){
k=0;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
scanf("%s%s",a,b);
int len,len1=strlen(a),len2=strlen(b);
if(len2!=len1){
if(len2>len1){ //确保a字符串为最大字符串
strcpy(w, a);
strcpy(a, b);
strcpy(b, w);
}
len=strlen(a)-strlen(b);
int c=strlen(a)-1,x=0;
for(i=strlen(b)-1;i>=0;i--){ //对b字符串进行补0 例如99 9 把9补为09
b[c-x]=b[i];
x++;
}
for(i=0;i<len;i++)
b[i]='0';
}
h=0;
for( i=strlen(a)-1; i>=0;i--){
g = (a[i] - '0') + (b[i] - '0') + h;
if (g > 9){
c[k] = g-10+'0'; h = 1;
}
else{
c[k] = g+'0'; h = 0;
}
k++;
}
if(h==1) c[k] = 1+'0';
else k--;
for(i=k;i>=0;i--)
printf("%c",c[i]);
printf("\n");
}
return 0;
}