最后一个测试点求助

P1303 A*B Problem

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 没事的


|