第五个点WA了

P1303 A*B Problem

pl_cosmonaut @ 2021-11-28 22:11:28

code

#include<bits/stdc++.h>
using namespace std;
int ad[2002],ans[2009],A[2001],B[2001];
char a[2001],b[2001];
int main(){
    cin>>a>>b;
    for(int i=0;i<=strlen(a)-1;i++)A[strlen(a)-i]=a[i]-'0';
    for(int i=0;i<=strlen(b)-1;i++)B[strlen(b)-i]=b[i]-'0';
    if(A[strlen(a)]==0||B[strlen(b)]==0){
        cout<<0;
        return 0;
    }
    for(int i=1;i<=strlen(b);i++){
        int zero=i-1;
        for(int j=1;j<=strlen(a);j++){
            ad[j+zero]+=B[i]*A[j];
            if(ad[j+zero]>=10){
                ad[j+zero+1]+=ad[j+zero]/10;
                ad[j+zero]%=10;
            }
        }
        for(int i=1;i<=strlen(a)+strlen(b);i++){
            ans[i]+=ad[i];
            ad[i]=0;
        }
    }
    for(int i=1;i<=strlen(a)+strlen(b);i++){
        ans[i+1]+=ans[i]/10;
        ans[i]%=10;
    }
    int flag=1;
    for(int i=strlen(a)+strlen(b);i>=1;i--){
        if(ans[i]!=0)flag=0;
        if(flag==0)cout<<ans[i];
    }
    return 0;
}

by zqc123 @ 2021-12-04 10:20:37

#include<bits/stdc++.h>
using namespace std;
char sa[101],sb[101];
int la,lb,lc,jw,f,w,a[101],b[101],c[10200];
int main()
{
    scanf("%s",sa);
    scanf("%s",sb);
    if(sa==0 || sb==0)
    {
        cout<<"0";
    }
    else
    {
        la=strlen(sa);
        lb=strlen(sb);
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(int i=0;i<la;i++)
        {
            a[la-i-1]=sa[i]-'0';
        }
        for(int i=0;i<la;i++)
        {
            b[lb-i-1]=sb[i]-'0';
        }
        memset(c,0,sizeof(c));
        jw=0;
        for(int i=0;i<la;i++)
        {
            for(int j=0;j<lb;j++)
            {
                f=a[i]*b[j];
                jw=f/10;
                f%=10;
                w=i+j;
                c[w]=c[w]+f;
                c[w+1]=c[w+1]+jw+c[w]/10;
                c[w]%=10;
            }
        }
        lc=la+lb;
        while(c[lc]==0)
        {
            lc--;
        }
        if(lc<0)
        {
            printf("0/n");
        }
        else for(int i=lc;i>=0;i--)
        {
            printf("%d",c[i]);
        }
    }
    return 0;
}

by WannaYellow @ 2021-12-26 15:11:42

@justbegan 数组开小了吧。。。开到4000的规模试试


by WannaYellow @ 2021-12-26 15:12:14

@星系啃手手 ans的数组大小


|