【问题描述】

  输入两个正整数,求他们的乘积。

【样例输入】

11111111111111111111111
1111111111111111111111

【样例输出】

12345679012345679012344320987654320987654321

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 int main(){
 5     char a1[10001], b1[10001];
 6     int a[10001], b[10001], c[10001];
 7     memset(a,0,sizeof(a));
 8     memset(b,0,sizeof(b));
 9     memset(c,0,sizeof(c));
10     cin >> a1 >> b1;
11     int lena, lenb;
12     lena = strlen(a1);
13     lenb = strlen(b1);
14     //为了方便计算,整型数组从下标1开始存储 
15     for(int i = 0;i<lena;i++){
16         a[lena - i] = a1[i] - 48;
17     } 
18     for(int i = 0;i<lenb;i++){
19         b[lenb - i] = b1[i] - 48;
20     }
21     for(int i = 1; i <= lena; i++){
22         int x = 0; //用于存放进位
23         for(int j = 1; j <= lenb; j++){
24             c[i+j-1] = a[i]*b[j] + x + c[i+j-1];//当前乘积加上次乘积进位加当前位值 
25             x = c[i+j-1]/10;
26             c[i+j-1]%=10; 
27         }
28         c[i+lenb]=x; //进位 
29     } 
30     int lenc = lena + lenb;
31     //删除前导0 
32     while(c[lenc]==0&&lenc>1){
33         lenc--;
34     }
35     for(int i = lenc; i > 0; i--){
36         cout << c[i];
37     } 
38     return 0;
39 }

 

posted on 2018-06-28 16:36  Hankercat  阅读(153)  评论(0)    收藏  举报