描述
计算两个超大正整数的和。
输入
第1行是一个整数n,表示随后有n组数据。每组数据占一行,输入正整数a和b(不超过50位),以空格分开。
输出
对每组数据,计算并输出a和b的和,并换行。
样例
输入 输出
3
123456789 12345678 135802467
13242325232535242 324 13242325232535566
657936583496539485698934561 987 657936583496539485698935548
代码
#include
void proc()
{
char a[50],b[50],d;
int c[51],i=0,j=0,x,y,e,f,z=0,g=0;
d=getchar();
while(d!=' ')
{
a[i]=d;
i++;
d=getchar();
}
i--;
d=getchar();
while(d!='\n')
{
b[j]=d;
j++;
d=getchar();
}
j--;
for(x=i,y=j;x>=0&&y>=0;x--,y--)//加起公共部分
{
e=a[x]-'0';
f=b[y]-'0';
if((e+f+g)>=10)
{
c[z]=e+f-10+g;
z++;
g=1;
}
else
{
c[z]=e+f+g;
z++;
g=0;
}
}
if(i>j)
{
for(x;x>=0;x--)
{
e=a[x]-'0';
if((e+g)>=10)
{
c[z]=e+g-10;
z++;
g=1;
}
else
{
c[z]=e+g;
z++;
g=0;
}
}
}
else if(i=0;y--)
{
f=b[y]-'0';
if((f+g)>=10)
{
c[z]=f+g-10;
z++;
g=1;
}
else
{
c[z]=f+g;
z++;
g=0;
}
}
}
if(g==1)
{
c[z]=1;
z++;//保持队形
}
z--;
for(z;z>=0;z--)
{
printf("%d",c[z]);
}
printf("\n");
}
int main()
{
int i,n;
scanf("%d",&n);
getchar();
for(i=0;i