aSamyy @ 2024-11-17 15:50:31
#include <bits/stdc++.h>
using namespace std;
int a[100005],b[100005],c[100005];
string s1,s2;
int la,lb,lc;
void zh(string s,int a[],int &l)
{
reverse(s.begin(),s.end());
int cmp=0,k=1;
for(int i=0; i<s.size(); i++)
{
cmp=cmp+(s[i]-'0')*k;
k=k*10;
if(k==10000)
{
k=1;
a[++l]=cmp;
cmp=0;
}
}
if(cmp!=0) a[++l]=cmp;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>s1>>s2;
zh(s1,a,la);
zh(s2,b,lb);
lc=la+lb;
int jw=0;
for(int i=1; i<=la; i++)
{
for(int j=1; j<=lb; j++)
{
int k=i+j-1;
c[k]+=a[i]*b[j];
jw=c[k]/10000;
c[k]=c[k]%10000;
while(jw)
{
k++;
c[k]+=jw%10000;
jw/=10000;
}
lc=max(lc,k);
}
}
while(c[lc]==0&&lc>1) lc--;
cout<<c[lc];
for(int i=lc-1; i>=1; i--)
{
if(c[i]<1000) cout<<0;
if(c[i]<100) cout<<0;
if(c[i]<10) cout<<0;
cout<<c[i];
}
return 0;
}
by WLOG404 @ 2024-12-06 23:26:16
第一个点没过吗,把输入数据开头的0处理掉