10:大整数加法
查看
提交
统计
提问
总时间限制:
1000ms
内存限制:
65536kB
描述
求两个不超过200位的非负整数的和。
输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
22222222222222222222
33333333333333333333
样例输出
55555555555555555555
来源
程序设计实习2007
代码:
状态: Accepted
#include<cstdio>
#include<cstring>
int main()
{
int i,a[202]={0},b[202]={0},d[202]={0},la,lb,c,m;
char s[202];
scanf("%s",&s);
la=strlen(s);
int t=0;
while(t<la)
{
a[t]=s[la-t-1]-48;
t++;
}
scanf("%s",&s);
lb=strlen(s);
t=0;
while(t<lb)
{
b[t]=s[lb-t-1]-48;
t++;
}
m=la>lb?la:lb;
c=0;
for(i=0;i<m;i++)
{
d[i]=(a[i]+b[i]+c)%10;
c=(a[i]+b[i]+c)/10;
}
if(c)d[m]=c;
else
{
for(i=m;i>0;i--)
if(d[i]) break;
m=i;
}
for(i=m;i>=0;i--)
printf("%d",d[i]);
}