自己测是对的,luogu就爆0???

P1303 A*B Problem

zjy1412 @ 2019-09-18 21:35:59

以下是我的代码,可能有点杂(考虑了负数),不过luogu就是过不去,改了好久了,求助!!!```cpp

include<iostream>

include<cstdio>

include<cmath>

using namespace std; int x[2001],y[2001],ans[4000001]; bool fu=true; int main(){ int nx=0,ny=0,rem,nans=0; char a; a=getchar(); while(a!='\n'){ if(a==' '){a=getchar(); continue;} if(a=='-')fu=!fu; else{ nx++; x[nx]=a-48;} a=getchar(); } for(int i=1;i<=nx/2;i++){ swap(x[i],x[nx-i+1]); } a=getchar(); while(a!='\n'&&a!=' '){ if(a=='-')fu=!fu; else { ny++; y[ny]=a-48;} a=getchar(); } for(int i=1;i<=ny/2;i++){ swap(y[i],y[ny-i+1]); } for(int i=1;i<=nx;i++) for(int t=1;t<=ny;t++){ rem=0; ans[t+i-1]=ans[t+i-1]+x[i]*y[t]; if(ans[t+i]>=10){rem=ans[t+i-1]/10; ans[t+i-1]%=10; } ans[t+i]=ans[t+i]+rem; } for(int i=1;i<=nx+ny+1;i++){ if(ans[i]>=10){ans[i+1]=ans[i+1]+ans[i]/10; ans[i]%=10; } if(ans[i]>0)nans=i; } if(nans==0){ cout<<0; return 0;} if(!fu)cout<<"-"; for(int i=nans;i>=1;i--){ cout<<ans[i];} return 0; }


by andy1128 @ 2019-09-18 21:38:16

挤一块了

by zjy1412 @ 2019-09-18 21:38:24

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int x[2001],y[2001],ans[4000001];
bool fu=true;
int main(){
    int nx=0,ny=0,rem,nans=0;
    char a;
    a=getchar();
    while(a!='\n'){
        if(a==' '){a=getchar();
        continue;} 
        if(a=='-')fu=!fu;
        else{
        nx++;
        x[nx]=a-48;}
        a=getchar();
    }
    for(int i=1;i<=nx/2;i++){
        swap(x[i],x[nx-i+1]);
    }
    a=getchar();
    while(a!='\n'&&a!=' '){
        if(a=='-')fu=!fu;
        else
        {
        ny++;
        y[ny]=a-48;}
        a=getchar();
    }
    for(int i=1;i<=ny/2;i++){
        swap(y[i],y[ny-i+1]);
    }
    for(int i=1;i<=nx;i++)
    for(int t=1;t<=ny;t++){
        rem=0;
        ans[t+i-1]=ans[t+i-1]+x[i]*y[t];
        if(ans[t+i]>=10){rem=ans[t+i-1]/10;
        ans[t+i-1]%=10;
        }
        ans[t+i]=ans[t+i]+rem;
    }
    for(int i=1;i<=nx+ny+1;i++){
        if(ans[i]>=10){ans[i+1]=ans[i+1]+ans[i]/10;
        ans[i]%=10;
        }
        if(ans[i]>0)nans=i;
    }
    if(nans==0){
    cout<<0;
    return 0;}
    if(!fu)cout<<"-";
    for(int i=nans;i>=1;i--){
    cout<<ans[i];}
    return 0;
}

by zjy1412 @ 2019-09-18 21:38:55

@andy1128 重发了


by _FILARET_ @ 2019-09-18 21:40:32

MarkDown的作用不是强调头文件的重要性


by QQ893531942 @ 2019-09-18 21:45:02

getchar令人恐慌我太弱了不会用


by zjy1412 @ 2019-09-18 21:48:08

@QQ893531942 getchar是不是在luogu里有问题?


by zjy1412 @ 2019-09-18 21:48:59

@deadpool123 不好意思 已重发


by QQ893531942 @ 2019-09-18 21:52:14

我不知道,但我用getchar经常爆0,一定是我写错了

\n改成\r?


by _Camille_ @ 2019-09-18 21:52:43

print(int(input())*int(input())) 你值得拥有


by zjy1412 @ 2019-09-18 21:56:53

@QQ893531942 你也是自己测过得了吗


| 下一页