题目描述
贝贝是学校信息学编程小组的学生,一天,他的数学老师碰到这样一个问题:他想求两个很长的数的乘积,但用普通的计算器无法完成计算,于是他请编程班的贝贝帮忙设计一个“超级计算器”,解决他所遇到的问题。
请你编一程序,帮贝贝解决这个问题。
输入
两行,分别是两个在10^100以内的自然数。
输出
两数相乘的结果。
样例输入 复制
578474357954668 12435124571
样例输出 复制
7193400702295541350947428
参考代码:
#include<bits/stdc++.h>
char a1[1001],b1[1001];
int a[1001],b[1001],c[1001];
using namespace std;
int main( void )
{
int lena,lenb,lenc,i,j,x;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>a1>>b1;
lena=strlen(a1);
lenb=strlen(b1);
for (i=0;i<=lena-1;i++)
{
a[lena-i]=a1[i]-48;
}
for (i=0;i<=lenb-1;i++)
{
b[lenb-i]=b1[i]-48;
}
for (i=1;i<=lena;i++)
{
x=0;
for (j=1;j<=lenb;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+lenb]=x;
}
lenc=lena+lenb;
while (c[lenc]==0 && lenc>1)
{
lenc--;
}
for (i=lenc;i>=1;i--)
{
cout<<c[i];
}
}