xueba1hao @ 2023-02-25 21:43:38
#include <bits/stdc++.h>
using namespace std;
int a[2005],b[2005],ans[2005],len_a,len_b,len_ans;
int main()
{
string a1,b1;
cin>>a1>>b1;
len_a=a1.size();
len_b=b1.size();
for(int i=0; i<len_a; i++)a[i]=a1[i]-'0';
for(int i=0; i<len_b; i++)b[i]=b1[i]-'0';
reverse(a,a+len_a);
reverse(b,b+len_b);
for(int i=0; i<len_a; i++)
{
for(int j=0; j<len_b; j++)
{
ans[i+j]+=a[i]*b[j];
}
}
while(ans[len_ans])len_ans++;
for(int i=0; i<len_ans; i++)
{
ans[i+1]=ans[i]/10;
ans[i]%=10;
}
while(ans[len_ans])len_ans++;
for(int i=len_ans-1; i>=0; i--)
{
cout<<ans[i];
}
return 0;
}
by l4u5son6 @ 2023-04-15 21:58:27
大哥,是乘法不是加法,ans数组开的太小了。2000位乘以2000位所得的积可能是3999位或者4000位。
by l4u5son6 @ 2023-04-15 22:02:39
@xueba1hao