高精度乘法模板

 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 }
原文地址:https://www.cnblogs.com/saionjisekai/p/9585473.html