[蓝桥杯]高精度加法
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 }