大整数加法
输入包括两个数a和b,其中a和b的位数不超过1000位。
可能有多组测试数据,对于每组数据, 输出a+b的值。
2 6 10000000000000000000 10000000000000000000000000000000
8 10000000000010000000000000000000
思路:翻转=》字符串转为整数=》倒序相加=》从第一个不是0的位置倒序输出。
1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 string a,b; 5 while(cin>>a>>b){ 6 reverse(a.begin(),a.end()); 7 reverse(b.begin(),b.end()); 8 int a1[1000]={0},b1[1000]={0},sum[1005]={0}; 9 for(int i=0;i<a.size();i++){ 10 a1[i]=a[i]-‘0‘; 11 } 12 for(int i=0;i<b.size();i++){ 13 b1[i]=b[i]-‘0‘; 14 } 15 int jinwei=0; 16 for(int i=0;i<a.size()||i<b.size();i++){ 17 if(a1[i]+b1[i]+jinwei<10){ 18 sum[i]=a1[i]+b1[i]+jinwei; 19 jinwei=0; 20 }else{ 21 sum[i]=(a1[i]+b1[i]+jinwei)%10; 22 jinwei=(a1[i]+b1[i]+jinwei)/10; 23 } 24 } 25 int flag=0; 26 int len=a.size()>b.size()?a.size()+2:b.size()+2; 27 for(int i=len;i>=0;i--){ 28 if(sum[i]!=0) flag=1; 29 if(flag==1) cout<<sum[i]; 30 } 31 cout<<endl; 32 } 33 return 0; 34 }
原文:https://www.cnblogs.com/YanShaoDian/p/12732434.html