高精度乘法 大整数乘法(1136)

题目描述:

给出两个长度小于100位的正整数,求其乘积。

输入描述:

两行,一行一个数。

输出描述:

一行,为所求乘积。

样例输入:

1937

2931

样例输出:

5677347

 

 思想:每个单位相乘,最后统一进位

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 int main(){
 5     string a,b;
 6     int len1,len2,len3,i,j,k=0;
 7     cin>>a;
 8     cin>>b;
 9     len1=a.length();
10     len2=b.length();
11     len3=len1+len2;
12     int aa[len1+1]={0},bb[len2+1]={0},cc[len3+1]={0};
13     for(i=1;i<=len1;i++){
14         aa[i]=a[len1-i]-'0';
15     }
16     for(i=1;i<=len2;i++){
17         bb[i]=b[len2-i]-'0';
18     }
19     for(i=1;i<=len1;i++){
20         for(j=1;j<=len2;j++){
21             cc[i+j-1]=cc[i+j-1]+aa[i]*bb[j];
22         }
23     }
24     for(i=1;i<=len3;i++){
25         cc[i+1]=cc[i+1]+cc[i]/10;
26         cc[i]=cc[i]%10;
27     }
28     while(len3>0&&cc[len3]==0){
29         len3--;
30     }
31     if(len3==0){
32         cout<<0<<endl;
33     }
34     else{
35         for(i=len3;i>0;i--){
36             cout<<cc[i];
37         }
38         cout<<endl;
39     }
40     return 0;
41 }

 

上一篇:_005_Vue_filter


下一篇:Docker containerd summit