本地输出和数据点一模一样,然而WA掉四个点,

P1303 A*B Problem

白上吹雪 @ 2018-03-09 20:44:28

include<bits/stdc++.h>

using namespace std; int a[11000],b[11000],c[110000],flag=0,x,i,l1,l2,l3,j,flag2=0; char s1[110000],s2[110000],s3[110000]; int main(){ gets(s1); gets(s2); if(s1[0]=='0'||s2[0]=='0'){ cout<<'0'; return 0; } if(s1[0]=='-'&&s2[0]=='-'){ flag2=1; for(int i=1;i<=strlen(s1+1);i++){ s3[i]=s1[i]; } for(int i=0;i<=strlen(s1+1);i++){ s1[i]=s3[i+1]; } for(int i=1;i<=strlen(s2+1);i++){ s3[i]=s2[i]; } for(int i=0;i<=strlen(s2+1);i++){ s2[i]=s3[i+1]; }

}
if((s1[0]=='-'||s2[0]=='-')&&!flag2){
    flag=1;
    if(s1[0]=='-'){
        for(int i=1;i<=strlen(s1+1);i++){
            s3[i]=s1[i];
        }
        for(int i=0;i<=strlen(s1+1);i++){
            s1[i]=s3[i+1];
        }
    }
    if(s2[0]=='-'){
        for(int i=1;i<=strlen(s2+1);i++){
            s3[i]=s2[i];
        }
        for(int i=0;i<=strlen(s2+1);i++){
            s2[i]=s3[i+1];
        }
    }
}
l1=strlen(s1);
l2=strlen(s2);
l3=l1+l2+10;
for(i=0;i<l1;i++) a[l1-i]=s1[i]-48;
for(i=0;i<l2;i++) b[l2-i]=s2[i]-48;
for(i=1;i<=l3;i++) for(j=1;j<=i;j++) c[i]+=a[j]*b[i-j+1];
for(i=1;i<=l3;i++){
    c[i]+=x;
    x=c[i]/10;
    c[i]%=10;
}
while(c[l3]==0) l3--;
if(flag) cout<<'-';
for(i=l3;i>=1;i--) cout<<c[i];

}


by 白上吹雪 @ 2018-03-09 20:47:00


by 黄朗初 @ 2018-03-09 20:47:13

豆子


by 白上吹雪 @ 2018-03-09 20:47:35


by namespace_std @ 2018-03-09 22:31:07

@伊芙加登 gets读一行,很可能行尾有个毒瘤的空格被读进去了


by namespace_std @ 2018-03-09 22:40:22

@伊芙加登

当我在输入后面加入几个空格时你的程序就挂掉了......

In:

123456   \n
123456   \n

Out:

1524095-4-5-7-6-5-62176

显然是不太妙啊


by namespace_std @ 2018-03-09 22:43:34


|