求助!!!

P1303 A*B Problem

HarryPotterJames @ 2021-08-11 21:08:35

为啥当一个数是0,另一个数是n位数时,就会有n个0?

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int MAXN=5005;
int A[MAXN],B[MAXN],C[MAXN],Ans[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 听取MLE声一片 @ 2021-08-11 21:13:37

@HarryPotterJames 你输出没判断0呗,自己看


by HarryPotterJames @ 2021-08-11 21:18:00

@听取MLE声一片 哦,是忘了……谢谢大佬指出


by Leonid @ 2021-08-11 21:18:35

因为你没去掉前导零


by HarryPotterJames @ 2021-08-11 21:23:51

@听取MLE声一片 我这个代码过了,但本机运行时如果第一个是0的话,第二个数就输不进去了。求问怎样改更好。谢谢!

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int MAXN=5005;
int A[MAXN],B[MAXN],C[MAXN],Ans[MAXN],Len_A,Len_B,Len_Ans;
int Read(int *A,int &Len)
{
    string cur;
    cin>>cur;
    if(cur=="0") return 1;
    Len=cur.length();
    for(int i=0;i<Len;i++)A[i]=cur[i]-48;
    reverse(A,A+Len);
    return 0;
}
int main()
{
    if(Read(A,Len_A)||Read(B,Len_B))
    {
        cout<<0;
        return 0;
    }
    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 听取MLE声一片 @ 2021-08-11 21:25:25

@HarryPotterJames 你代码是输入一个数如果是0就直接结束了


by HarryPotterJames @ 2021-08-11 21:28:25

@听取MLE声一片 是的……但我不知道怎么改

毕竟在洛谷上已经AC了


by HarryPotterJames @ 2021-08-11 21:29:19

@FriskLSZ 谢谢大佬


by 听取MLE声一片 @ 2021-08-11 21:29:32

@HarryPotterJames

int x=Read(A,Len_A),y=Read(B,Len_B);
if(x||y)
    {
        cout<<0;
        return 0;
    }

by HarryPotterJames @ 2021-08-11 21:30:34

@听取MLE声一片 谢谢 求互关


|