为什么洛谷IDE里面都能过结果提交0分啊

P1303 A*B Problem

Cryflmind @ 2023-09-25 22:34:51

代码:

#include<bits/stdc++.h>
using namespace std;
struct Bignum{
    int lens=0,nums[5100];
    Bignum(string x){
        memset(nums,0,sizeof(nums));
        lens=x.length();
        for(int i=1;lens>=1;lens--,++i)
        {
            nums[i] = x[lens-1]-'0';
        }
        lens=x.length();
    }
    int &operator[](int i)
    {
        return nums[i];
    }
    void flat(int end)
    {
        lens=end;
        for(int i=1;i<=lens;i++)
        {
            nums[i+1]+=nums[i]/10,nums[i]%=10;
        }
        for(;!nums[lens];)
        {
            lens--;
        }
    }
    void print()
    {
        for(int i=max(lens,1);i>=1;i--)
        {
            cout<<nums[i];
        }
    }
};
Bignum operator+(Bignum a,Bignum b)
{
    Bignum c("0");
    int lens=max(a.lens,b.lens);
    for(int i=1;i<=lens;i++)
    {
        c[i]+=a[i]+b[i];
    }
    c.flat(lens+1);
    return c;
}
Bignum operator*(Bignum a,Bignum b)
{
    Bignum c("0");
    c.lens=a.lens+b.lens;
    for(int i=1;i<=a.lens;i++)
    {
        for(int j=1;j<=b.lens;j++)
        {
            c[i+j-1]+=a[i]*b[j];
        }
    }
    c.flat(c.lens+1);
    for(;!c.nums[c.lens];)
    {
        c.lens--;
    }
    return c;
}
int main()
{
    string ta,tb;
    getline(cin,ta);
    getline(cin,tb);
    Bignum a(ta),b(tb),sumsans("0");
    sumsans=a*b;
    sumsans.print();
    return 0;
}

怎么测都对为啥提交全部WA啊


by shuangmu @ 2023-09-26 08:25:51

有可能是数据的锅,比如你得输入两个换行符……因为 Windows 下生成数据就会多一个换行


by shuangmu @ 2023-09-26 08:27:17

这里建议字符串能用scanf("%s") 输入就用这个,因为可以忽略换行什么的


by Cryflmind @ 2023-09-26 09:38:06

@shuangmu 好嘛……你猜怎么着,scanf也没过去,然后我cin过去了……


by Cryflmind @ 2023-09-26 09:39:49

不过为啥scanf会导致RE啊……


|