noi-1982-大整數加法
阿新 • • 發佈:2019-01-04
10:大整數加法
- 總時間限制:
- 1000ms
- 記憶體限制:
- 65536kB
- 描述
-
求兩個不超過200位的非負整數的和。
- 輸入
- 有兩行,每行是一個不超過200位的非負整數,可能有多餘的前導0。
- 輸出
- 一行,即相加後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。
- 樣例輸入
-
22222222222222222222 33333333333333333333
- 樣例輸出
-
55555555555555555555
- 來源
- 程式設計實習2007
//noi_1982 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<iomanip> using namespace std; int c[205]={0},d[205]={0}; void initial(int a[]){ string s; cin>>s; a[0]=s.length(); for(int i=1;i<=a[0];i++){ a[i]=s[a[0]-i]-'0'; } for(int i=a[0];i>=1;i--){ if(a[i]==0) a[0]--; else break; } } void printa(int a[]){ if(a[0]==0) { cout<<0; return; } for(int i=1;i<=a[0];i++){ cout<<a[a[0]+1-i]; } // cout<<endl; } void plusa(int a[],int b[]){ if(b[0]>a[0]) a[0]=b[0]; for(int i=1;i<=a[0];i++){ a[i]=a[i]+b[i]; a[i+1]+=a[i]/10; a[i]%=10; } if(a[a[0]+1]) a[0]++; } int main(){ initial(c); initial(d); plusa(c,d); printa(c); return 0; }
要考慮結果為零的情況,還有要去除前導零。