-
高精度加法
算法核心:
c[i]+=a[i]+b[i]; c[i+1]=c[i]/10; //进位到后一位; c[i]=c[i]%10 //一个位上不会出现大于等于10的数,大于等于10的部分已经进到后一位
#include<bits/stdc++.h>
using namespace std;
char s1[505],s2[505]; //¿É¼ÆËã10µÄ500´Î·½
int a[505],b[505],c[505];
int main(){
int lena,lenb,lenc;
cin>>s1>>s2;
lena=strlen(s1);
lenb=strlen(s2);
for(int i=0;i<lena;i++){
a[lena-i]=s1[i]-'0'; //½«×Ö·ûת»¯ÎªÊý×Ö£¬²¢ÇÒתÖÃ
}
for(int i=0;i<lenb;i++){
b[lenb-i]=s2[i]-'0';
}
lenc=max(lena,lenb)+1;
for(int i=1;i<=lenc;i++){
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10;
c[i]=c[i]%10;
}
if(c[lenc]==0&&lenc>0) lenc--;//ɾ³ýÇ°µ¼0
for(int i=lenc;i>0;i--){
cout<<c[i]; //µ¹ÖÃÊä³ö
}
}