高精度乘法模板
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<strlen(a);i++){ 13 for(int j=0;j<strlen(b);j++){ 14 c[i+j]+=x[i]*y[j]; 15 } 16 } 17 for(int i=0;i<=strlen(a)+strlen(b)-1;i++)c[i+1]+=c[i]/10,c[i]%=10; 18 for(int i=strlen(a)+strlen(b)-1;i>=0;i--){ 19 if(i==strlen(a)+strlen(b)-1&&c[strlen(a)+strlen(b)-1]==0)continue; 20 z[++cnt]=c[i]+48; 21 } 22 return z; 23 } 24 int main(){ 25 char a[10005],b[10005]; 26 cin>>a>>b; 27 reverse(a,a+strlen(a)); 28 reverse(b,b+strlen(b)); 29 cout<<add(a,b); 30 }