求助RE,调试未发现错误。

P1303 A*B Problem

T20201126 @ 2021-08-09 13:54:28

#include<bits/stdc++.h>
using namespace std;
int j;
char s1[3000],s2[3000];
int a[2500],b[2500],c[2500];
void cheng(int *a,int *b)
{
    int k=0;
    for(int i=1;i<=2253;i++)
    {
        k=0;
        for(int j=1;j<=2253;j++)
        {
            c[i+j-1]=c[i+j-1]+a[i]*b[j]+k;
            k=c[i+j-1]/10;
            c[i+j-1]=c[i+j-1]%10;
        }
    }
}
int main()
{
    cin>>s1;
    cin>>s2; 
    j=0;
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b));
    memset(c,0,sizeof(c));
    for(int i=strlen(s1);i>=0;i--)
        a[++j]=s1[i]-'0';
    j=0;
    for(int i=strlen(s2);i>=0;i--)
        b[++j]=s2[i]-'0';
    cheng(a,b);
    j=5000;
    while(j>1&&c[j]==0) --j;
    for(int i=j;i>=1;i--) cout<<c[i];
    return 0;
}

by lemondinosaur @ 2021-08-09 19:24:02

高精度数组开小了

应该开 2000*2 以上


|