大数乘法

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<math.h>
 4 #include<algorithm>
 5 #include<string.h>
 6 #include<string>
 7 #include<ctime>
 8 #include<queue>
 9 #include<list>
10 #define INF 9999999
11 #define MAXN 10000
12 using namespace std;
13 //    priority_queue<int,vector<int>,greater<int> > pq;
14 
15 int main()
16 {
17     int a[50],b[50],c[100];
18     string sa,sb;
19     while(cin>>sa>>sb)
20     {
21         int i,j;
22         for(i=sa.size()-1,j=0;i>=0;i--,j++)
23             a[j]=sa[i]-'0';
24         for(i=sb.size()-1,j=0;i>=0;i--,j++)
25             b[j]=sb[i]-'0';
26         memset(c,0,sizeof(c));
27         for(i=0;i<sa.size();i++)
28             for(j=0;j<sb.size();j++)
29                 c[i+j]+=a[i]*b[j];
30         for(i=0;i<sa.size()+sb.size()+2;i++)
31         {
32             c[i+1]+=c[i]/10;
33             c[i]%=10;
34         }
35         int flag=0;
36         for(i=sa.size()+sb.size()+2;i>=0;i--)
37             if(flag||c[i])
38             {
39                 cout<<c[i];
40                 flag=1;
41             }
42         cout<<endl;
43     }    
44     return 0;
45 }
原文地址:https://www.cnblogs.com/crazyapple/p/2999419.html