超级计算机
题目描述
贝贝是学校信息学编程小组的学生,一天,他的数学老师碰到这样一个问题:他想求两个很长的数的乘积,但用普通的计算器无法完成计算,于是他请编程班的贝贝帮忙设计一个“超级计算器”,解决他所遇到的问题。
请你编一程序,帮助贝贝解决这个问题。
输入输出格式
输入格式:
两行,分别是两个在10^10~10^100以内的自然数。
输出格式:
一行,为两数相乘的结果。
输入输出样例
输入样例:
578474357954668 12435124571
输出样例:
View Code
7193400702295541350947428
思路:同加减法,辨别进位。
代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//程序名:新的C++程序 //作者: #include<iostream> #include<fstream> #include<algorithm> #include<string> using namespace std; int a[1001],b[1001],c[1000001],la,lb,lc,x; string ans,a1,b1; int main() { cin>>a1>>b1; la=a1.size();lb=b1.size(); for(int i=0;i<=la-1;i++)a[la-i]=a1[i]-48; for(int i=0;i<=lb-1;i++)b[lb-i]=b1[i]-48; for(int i=1;i<=la;i++) { x=0; for(int j=1;j<=lb;j++) { c[i+j-1]=a[i]*b[j]+x+c[i+j-1]; x=c[i+j-1]/10; c[i+j-1]%=10; } c[i+lb]=x; } lc=la+lb; while(c[lc]==0&&lc>1)lc--; for(int i=lc;i>=1;i--)cout<<c[i]; }