80pts求助!WA#1

P1303 A*B Problem

Engulf @ 2021-07-04 14:33:23

高精度乘法WA#1

下载数据一看

答案没有错啊!

测试点1 in 0 10

测试点1 out 0

怎么WA了????

附上代码

#include<bits/stdc++.h>
using namespace std;
const int MAXN=2005;
int A[MAXN],B[MAXN],Ans[MAXN*MAXN],Len_A,Len_B,Len_Ans;
void Read(int *a,int &Len){
    string cur;
    cin>>cur;
    Len=cur.length();
    for(int i=0;i<Len;i++)a[i]=cur[i]-48;
    reverse(a,a+Len);
}
int main(){
    Read(A,Len_A);
    Read(B,Len_B);
    Len_Ans=Len_A+Len_B-1;
    for(int i=0;i<Len_A;i++)
        for(int j=0;j<Len_B;j++)
            Ans[i+j]+=A[i]*B[j];
    for(int i=0;i<Len_Ans;i++)
        if(Ans[i]>9)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 Maxmilite @ 2021-07-04 15:09:48

考虑给个特判。

#include<bits/stdc++.h>
using namespace std;
const int MAXN=2005;
int A[MAXN],B[MAXN],Ans[MAXN*MAXN],Len_A,Len_B,Len_Ans;
void Read(int *a,int &Len){
    string cur;
    cin>>cur;
    Len=cur.length();
    for(int i=0;i<Len;i++)a[i]=cur[i]-48;
    reverse(a,a+Len);
}
int main(){
    Read(A,Len_A);
    Read(B,Len_B);
    Len_Ans=Len_A+Len_B-1;
    for(int i=0;i<Len_A;i++)
        for(int j=0;j<Len_B;j++)
            Ans[i+j]+=A[i]*B[j];
    for(int i=0;i<Len_Ans;i++)
        if(Ans[i]>9)Ans[i+1]+=Ans[i]/10,Ans[i]%=10;
    while(Ans[Len_Ans])Len_Ans++;

    if (Ans[Len_Ans - 1] == 0)
        cout << 0 << endl;
    else
        for(int i=Len_Ans-1;i>=0;i--)cout<<Ans[i];
    return 0;
}

by Maxmilite @ 2021-07-04 15:10:06

@TMJYH09


by 于洪铎 @ 2021-07-04 15:17:36

提示:(用python)

跑题ing。****

第一次第一!!!!!!!!


by Engulf @ 2021-07-04 16:36:17

@Maxmilite

多谢大佬!orzorzorz


|