高精度乘法 大整数乘法(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 }

 

转载于:https://www.cnblogs.com/zq-dmhy/p/11015791.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值