Dictator_ @ 2023-10-29 12:00:47
求助大佬 题目说两个数都是2000位以下,为什么a和b两个数组开到2500都不够,但是开到4000就够了呀
#include<iostream>
#include<string>
using namespace std;
int a[2500],b[2500],c[4500];
int main()
{
string A,B;
cin>>A>>B;
a[0]=A.length(),b[0]=B.length();
int len=a[0]+b[0];
for(int i=1;i<=a[0];i++)
a[i]=A[a[0]-i]-'0';
for(int i=1;i<=b[0];i++)
b[i]=B[b[0]-i]-'0';
for(int i=1;i<=len;i++)
for(int j=1;j<=len;j++)
c[j+i-1]+=a[i]*b[j];
for(int i=1;i<=len;i++)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
while(c[len]==0&&len>1) len--;
for(int i=len;i>0;i--)
cout<<c[i];
return 0;
}
by zjpwdyf @ 2023-10-29 12:11:46
在15,16行中,i,j最多可以到达len,而len=两数长度之和,为4000
by Dictator_ @ 2023-10-30 09:25:27
@zjpwdyf 谢谢大佬!困扰一天了,终于茅塞顿开
by zjpwdyf @ 2023-10-30 11:34:10
@k2772840591 没事的