#include<iostream>
using namespace std;
typedef long long LL;
const int N=2e6+1000;
string a,b;
LL A[N],B[N],C[N];
void mul(int alen,int blen)
{
for(int i=0;i<alen;i++)
{
int cnt=i;
for(int j=0;j<blen;j++)
{
C[cnt]+=A[i]*B[j];
cnt++;
}
}
int clen=alen*blen;
for(int i=0;i<clen;i++)
{
if(C[i]>9)
{
C[i+1]=C[i+1]+C[i]/10;
C[i]=C[i]%10;
}
}
while(C[clen]==0&&clen>=1) clen--;
for(int i=clen;i>=0;i--) cout<<C[i];
}
int main()
{
cin>>a>>b;
int alen=a.size(),blen=b.size();
for(int i=0;i<alen;i++) A[i]=a[alen-i-1]-'0';
for(int i=0;i<blen;i++) B[i]=b[blen-i-1]-'0';
mul(alen,blen);
return 0;
}
高精度乘法基于小学的时候我们学习的列竖式,列竖式的思想与高精度乘法的原理是一样的