高精度乘法(模板)


 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 } 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM