首页 > 其他 > 详细

1174:大整数乘法

时间:2019-06-16 15:18:10      阅读:159      评论:0      收藏:0      [点我收藏+]

传送门:http://ybt.ssoier.cn:8088/problem_show.php?pid=1174

 

【题目描述】

求两个不超过200位的非负整数的积。

【输入】

有两行,每行是一个不超过200位的非负整数,没有多余的前导0。

【输出】

一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

【输入样例】

12345678900
98765432100

【输出样例】

1219326311126352690000



和高精加一样的存储。用竖式算

 1 #include<iostream>
 2 #include<cstring>
 3 #define N 410
 4 using namespace std;
 5 string a,b;
 6 int as[N],bs[N],cs[N],len;
 7 int main(){
 8     cin>>a>>b;
 9     for(int i=0;i<a.size();i++)as[i]=a[a.size()-i-1]-0;
10     for(int i=0;i<b.size();i++)bs[i]=b[b.size()-i-1]-0;
11     len=a.size()+b.size();
12     for(int i=0;i<a.size();i++)
13         for(int j=0;j<b.size();j++)
14             cs[i+j]+=as[i]*bs[j];
15     for(int i=0;i<len;i++)
16         if(cs[i]>9){
17             cs[i+1]+=cs[i]/10;
18             cs[i]%=10;
19             if(i==len-1)len++;
20         }
21     while(len&&cs[len]==0)len--;
22     for(int i=len;i>=0;i--)cout<<cs[i];
23     cout<<endl;
24 }

 

1174:大整数乘法

原文:https://www.cnblogs.com/jzxnl/p/11031347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!