大整数加法

  困扰了自己很久,一直想的是用数组存数字,没想到存字符串这种方法。勉强写出来也错了,最后在网上找到了答案  答案摘自(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  }

 

posted @ 2022-01-23 17:10  同泛舟船  阅读(50)  评论(0)    收藏  举报