满分输出,但是。。。。麻烦各位大佬看看哪里出问题了

P1303 A*B Problem

seven7777 @ 2021-02-12 12:38:55

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a[520]={0},b[520]={0},c[520]={0};
    string A,B;
    cin>>A>>B;
    int len=A.length()+B.length();
    for(int i=1,j=A.length()-1;j>=0;i++,j--)
        a[i]=A[j]-'0';
    for(int i=1,j=B.length()-1;j>=0;i++,j--)
        b[i]=B[j]-'0';
    for(int i=1;i<=A.length();i++)
    {
        for(int j=1;j<=B.length();j++)
        {
            c[i+j-1]+=a[i]*b[j];
        }
    }
    for(int i=1;i<=len;i++)
    {
        c[i+1]+=c[i]/10;
        c[i]=c[i]%10;
    }
    if(c[len]==0)
        len--;  
    for(int i=len;i>=1;i--)
    {
        cout<<c[i];
    }
    return 0;
}

by _caiji_ @ 2021-02-12 12:41:21

每个数字不超过 10^{2000},需用高精。

int a[520]={0},b[520]={0},c[520]={0};

您数组开小了,另外 c 数组存储的是积,需要双倍长度。

@seven7777


by cq_loves_Capoo @ 2021-02-12 12:44:56

@seven7777

1.数组开小了

2.0 的时候没有输出


|