大整数加法
困扰了自己很久,一直想的是用数组存数字,没想到存字符串这种方法。勉强写出来也错了,最后在网上找到了答案 答案摘自(5条消息) 10:大整数加法_你的心,如何追逐?-CSDN博客
题要考虑的地方有 前导0的存在 、进位、两数长度不一样等
描述
求两个不超过200位的非负整数的和。
输入有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。输出一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。样例输入
22222222222222222222 33333333333333333333
样例输出
55555555555555555555
1 #include<cstdio> 2 #include<cstring> 3 int main() 4 { 5 int i,a[202]={0},b[202]={0},d[202]={0},la,lb,c,m; 6 char s[202]; 7 scanf("%s",&s); 8 la=strlen(s); 9 int t=0; 10 while(t<la) 11 { 12 a[t]=s[la-t-1]-48; 13 t++; 14 } 15 scanf("%s",&s); 16 lb=strlen(s); 17 t=0; 18 while(t<lb) 19 { 20 b[t]=s[lb-t-1]-48; 21 t++; 22 } 23 m=la>lb?la:lb; 24 c=0; 25 for(i=0;i<m;i++) 26 { 27 d[i]=(a[i]+b[i]+c)%10; 28 c=(a[i]+b[i]+c)/10; 29 } 30 if(c)d[m]=c; 31 else 32 { 33 for(i=m;i>0;i--) 34 if(d[i]) break; 35 m=i; 36 } 37 for(i=m;i>=0;i--) 38 printf("%d",d[i]); 39 }
浙公网安备 33010602011771号