高精度加法模板
本模板以char数组为基准,比string要快一点
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring> 5 using namespace std; 6 char* add(char a[],char b[]){ 7 int lena=strlen(a);int lenb=strlen(b); 8 int c[10000],x[100006],y[100006],cnt=-1; 9 char z[100005]; 10 for(int i=0;i<strlen(a);i++)x[i]=a[i]-48; 11 for(int i=0;i<strlen(b);i++)y[i]=b[i]-48; 12 for(int i=0;i<max(strlen(a),strlen(b));i++)c[i]=x[i]+y[i]; 13 for(int i=0;i<=max(strlen(a),strlen(b));i++)c[i+1]+=c[i]/10,c[i]%=10; 14 for(int i=max(strlen(a),strlen(b));i>=0;i--){ 15 if(i==max(strlen(a),strlen(b))&&c[max(strlen(a),strlen(b))]==0)continue; 16 z[++cnt]=c[i]+48; 17 } 18 return z; 19 } 20 int main(){ 21 char a[10005],b[10005]; 22 cin>>a>>b; 23 reverse(a,a+strlen(a)); 24 reverse(b,b+strlen(b)); 25 cout<<add(a,b); 26 }