求兩個不超過200位的非負整數的和。
輸入有兩行,每行是一個不超過200位的非負整數,可能有多余的前導0。輸出一行,即相加后的結果。結果里不能有多余的前導0,即如果結果是342,那么就不能輸出為0342。樣例輸入2222222222222222222233333333333333333333樣例輸出55555555555555555555#include<iostream>#include<cstdio>#include<cmath>#include<string>#include<algorithm>using namespace std;const int maxn=10005;int a[maxn],b[maxn],c[maxn],ans[maxn],lena,lenb,lenans;void read(int *a,int &len){ string cur; cin>>cur; len=cur.length(); for(int i=0;i<len;i++) a[i]=cur[i]-48; reverse(a,a+len);}int main(){ read(a,lena); read(b,lenb); lenans=max(lena,lenb); for(int i=0;i<=lenans;i++) { ans[i]=a[i]+b[i]+c[i]; if(ans[i]>9) { c[i+1]=ans[i]/10; ans[i]=ans[i]%10; } } while(ans[lenans]>0) lenans++; bool first=true; for(int i=lenans-1;i>=0;i--) { if(first==true&&ans[i]>0) first=false; if(first==false) cout<<ans[i]; } if(first==true) cout<<0; return 0;}
新聞熱點
疑難解答