#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
int i,j;
while(cin>>a>>b)
{
int n[1000]={0},m[1000]={0},c[1000]={0};
for(i=a.size()-1,j=0;i>=0;i--,j++) //倒叙存储
{
n[j]=a[i]-'0';
}
for(i=b.size()-1,j=0;i>=0;i--,j++)
{
m[j]=b[i]-'0';
}
for(i=0;i<a.size();i++)
{
for(j=0;j<b.size();j++)
{
c[i+j]+=n[i]*m[j]; //运用公式 c[i+j]+=n[i]*m[j] (从别处偷来的)
}
}
int k=a.size()+b.size()-1; //k为相乘后的数位大小
for(i=0;i<=k;i++)
{
if(c[i]>=10)
{
c[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
}
i=k;
while(c[i]==0&&i!=0)
{
i--;
}
if(i==0)
{
cout<<0<<endl;
return 0;
}
for(;i>=0;i--) //倒叙输出
{
cout<<c[i];
}cout<<endl;
}
return 0;
}
高精度乘法
最新推荐文章于 2020-09-07 10:42:37 发布