1181: a+b(不同于第一题)
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 973 Solved: 317
[ Submit][ Status][ Web Board]
Description
求a+b的值
Input
第一行一个整数T,表示接下来有T行
每行两个整数是a,b,(0<=a,b<=10^10000)
Output
输出值
Sample Input
2 100 100 10000000000 10000000000
Sample Output
200 20000000000
HINT
Source
#include<stdio.h>
#include<string.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
char a[100010],b[100010],c[100010];
scanf("%s%s",a,b);
int lena,lenb;
lena=strlen(a);
lenb=strlen(b);
int i,j,k=0,p=0; //p进位
for(i=lena,j=lenb;i>0||j>0;i--,j--)
{
if(i>0&&j>0)
{
c[k]=(((a[i-1]-'0')+(b[j-1]-'0')+p)%10)+'0';
p=(((a[i-1]-'0')+(b[j-1]-'0')+p)/10);
}
else if(j<=0)
{
c[k]=(((a[i-1]-'0')+p)%10)+'0';
p=(((a[i-1]-'0')+p)/10);
}
else
{
c[k]=(((b[j-1]-'0')+p)%10)+'0';
p=(((b[j-1]-'0')+p)/10);
}
k++;
}
if(p>0)
{
printf("1");
for(i=k-1;i>=0;i--)
printf("%c",c[i]);
}
else
for(i=k-1;i>=0;i--)
printf("%c",c[i]);
printf("\n");
}
return 0;
}