3116 高精度练习之加法
题目描述 Description
给出两个正整数A和B,计算A+B的值。保证A和B的位数不超过500位。
输入描述 Input Description
读入两个用空格隔开的正整数
输出描述 Output Description
输出A+B的值
样例输入 Sample Input
3 12
样例输出 Sample Output
15
数据范围及提示 Data Size & Hint
两个正整数的位数不超过500位
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 6 using namespace std; 7 const int N=1001; 8 9 char aa[N]; 10 char bb[N]; 11 int c[N]; 12 int a[N]; 13 int b[N]; 14 15 int main() 16 { 17 scanf("%s%s",aa,bb); 18 int la=strlen(aa); 19 int lb=strlen(bb); 20 for(int i=0;i<la;i++) 21 a[i+1]=aa[la-i-1]-'0'; 22 for(int i=0;i<lb;i++) 23 b[i+1]=bb[lb-i-1]-'0'; 24 for(int i=1;i<=max(la,lb);i++) 25 c[i]=a[i]+b[i]; 26 for(int i=1;i<=max(la,lb);i++) 27 if(c[i]>=10) 28 { 29 c[i+1]++; 30 c[i]%=10; 31 } 32 int j=max(la,lb)+1; 33 while(!c[j]&&j>1) 34 { 35 j--; 36 } 37 for(int i=j;i>=1;i--) 38 { 39 cout<<c[i]; 40 } 41 }