思路比较简单,模拟小学加法即可,这里需要注意的是a与b相加之后的数的长度可能是a+b+1
//高精度加法 #include<iostream> #include<string> using namespace std; const int MAX=510; string a,b; int lena,lenb; int num1[MAX]; int num2[MAX]; int sum[MAX]; int main(){ cin>>a>>b; lena=a.length(); lenb=b.length(); for(int i=1;i<=lena;i++){ num1[i]=a[lena-i]-48; } for(int i=1;i<=lenb;i++){//倒序存储方便进位 num2[i]=b[lenb-i]-48; } int len=max(lena,lenb),add=0;//初始化进位为0 for(int i=1;i<=len;i++){ sum[i]=(num1[i]+num2[i]+add)%10; add=(num1[i]+num2[i]+add)/10;//进位 } if(add!=0){//多一位 sum[len+1]=add; cout<<sum[len+1]; } for(int i=len;i>=1;i--){//再倒回来 cout<<sum[i]; } cout<<endl; return 0; }
A+B Problem(模拟)
最新推荐文章于 2024-08-21 18:16:36 发布