[蓝桥杯]高精度加法

Description
输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。
Input
输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。
Output
输出一行,表示a + b的值。
Sample Input
 20100122201001221234567890
2010012220100122
Sample Output
 20100122203011233454668012
 More Info 
由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。

 高精+高精

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int l1,l2,l3,a[2000],b[2000],c[200];
 4 char s[2000];
 5 void work()
 6 {
 7     l3=max(l1,l2);
 8     for(int i=1;i<=l3;++i)
 9     {
10         c[i]=a[i]+b[i];
11         c[i]+=c[i-1]/10;
12         c[i-1]%=10;
13     }
14     while(c[l3]>=10)
15     {
16         l3++;c[l3]+=c[l3-1]/10;
17         c[l3-1]%=10;
18     }
19     for(int i=l3;i>=1;--i) cout<<c[i];
20 }
21 int main()
22 {
23     scanf("%s",s+1);
24     for(int i=strlen(s+1);i>=1;--i) a[++l1]=s[i]-'0';
25     scanf("%s",s+1);
26     for(int i=strlen(s+1);i>=1;--i) b[++l2]=s[i]-'0';
27     work();
28     return 0;
29 } 
View Code

 

posted @ 2020-02-02 11:23  月亮茶  阅读(263)  评论(0编辑  收藏  举报