高精度乘法(模板)

 1 #include<iostream>
 2 #include<string>
 3 #include<cstring>
 4 using namespace std;
 5 int main()
 6 {
 7     int a[2010],b[2010],c[40100];//数组开大一点,以防RE
 8     int i,j;
 9     string s,x;
10     cin>>s>>x;
11     memset(a,0,sizeof(a)); 
12     memset(b,0,sizeof(b)); 
13     memset(c,0,sizeof(c)); 
14     //清空数组,防止意外
15     a[0]=s.length();
16     for(i=1;i<=a[0];i++)
17     {
18         a[i]=s[a[0]-i]-'0'; 
19     }
20     b[0]=x.length();
21     for(i=1;i<=b[0];i++)
22     {
23         b[i]=x[b[0]-i]-'0'; 
24     }
25     c[0]=a[0]+b[0]-1;
26     for(j=1;j<=b[0];j++)
27     {
28         for(i=1;i<=a[0];i++)
29         {
30             c[i+j-1]+=a[i]*b[j];
31             c[i+j]+=c[i+j-1]/10;
32             c[i+j-1]%=10;
33             //进位处理
34         }
35     }
36     if(c[c[0]+1]>=1) c[0]++;
37     while(c[c[0]]==0&&c[0]>1) --c[0];
38     for(i=c[0];i>=1;i--) cout<<c[i];
39     return 0;
40 } 

猜你喜欢

转载自www.cnblogs.com/lipeiyi520/p/10422051.html