#include<bits/stdc++.h>
using namespace std;
string st1,st2;
int a[500],b[500],len1,len2,len,c[500],m;
int main()
{
cin>>st1>>st2;
int l1=st1.size(),l2=st2.size();
for(int i=l1-1,j=0;i>=0;i--,j++)
{
a[j]=st1[i]-'0';
int x=1;
for(int k=1;k<4;k++)
{
if(i-1<0)break;
i--;
x*=10;
a[j]=(st1[i]-'0')*x+a[j];
};len++;
};
len1=len;
len=0;
for(int i=l2-1,j=0;i>=0;i--,j++)
{
b[j]=st2[i]-'0';
int x=1;
for(int k=1;k<4;k++)
{
if(i-1<0)break;
i--;
x*=10;
b[j]=(st2[i]-'0')*x+b[j];
};len++;
};
len2=len;
for(int i=0;i<len1;i++)
for(int j=0;j<len2;j++)
{
c[i+j]+=a[i]*b[j];
c[i+j+1]=c[i+j+1]+c[i+j]/10000;
c[i+j]%=10000;
};
for(int k=len1+len2-1;k>=0;k--)
{
m=k;
if(c[k]!=0)break;
};
cout<<c[m];
for(int i=m-1;i>=0;i--)
{
if(c[i]>=0&&c[i]<=9)cout<<"000";
if(c[i]>=10&&c[i]<=99)cout<<"00";
if(c[i]>=100&&c[i]<=999)cout<<"0";
cout<<c[i];
};
return 0;
}
高精度加乘法——四位改良版
最新推荐文章于 2023-08-31 00:30:00 发布