本地输出正确,但洛谷全WR求助

P1303 A*B Problem

KOTSRwy2 @ 2024-12-11 20:28:37

#include <bits/stdc++.h>
using namespace std;
void string_to_num(string & a,vector<int> & n)
{
    for(int i = 0;i < a.length();i++)
    {
        n[i] = a[a.length()-i-1] - '0';
    }
}

int main()
{
    string n1,n2;
    getline(cin,n1);
    getline(cin,n2);
    vector<int> num1(2001,0),num2(2001,0);
    vector<int> re(4e6+10,0);
    string_to_num(n1,num1);
    string_to_num(n2,num2);
    for(int i = 0;i < n1.length();i++)
        for(int j = 0;j < n2.length();j++)
            re[i + j] += num1[i] * num2[j];
    for(int i = 0;i < 4e6 + 10;i++)
    {
        if ( re[i] > 9 )
        {
            re[i + 1] += re[i] / 10;
            re[i] = re[i] % 10;
        }
    }
    bool flag = false;
    for(int i = 4e6+5;i >=1 ;i--)
    {
        if(re[i] != 0)
        {flag = true;}
        if(flag)
        {cout << re[i];}
    }
    cout << re[0];
    return 0;
}

by lyc_qwq @ 2024-12-11 20:32:17

@KOTSRwy2 我的代码:

#include<bits/stdc++.h>
using namespace std;
string s,ss;
int a[4000],b[4000],c[4000];
int main(){
    cin>>s>>ss;
    int l=s.size();
    int ll=ss.size();
    for(int i=0;i<l;i++)
        a[i]=s[l-i-1]-'0';
    for(int i=0;i<ll;i++)
        b[i]=ss[ll-i-1]-'0';
    for(int i=0;i<l;i++){
        int x=0,j;
        for(j=0;j<ll;j++){
            c[i+j]=a[i]*b[j]+x+c[i+j];
            x=c[i+j]/10;
            c[i+j]%=10;
        }
        if(x!=0)
            c[i+j]=x;
    }
    int lc=l+ll;
    while(lc>0 && !c[lc])
        lc--;
    for(int i=lc;i>=0;i--)
        cout<<c[i];
    return 0;
}

by lyc_qwq @ 2024-12-11 20:32:50

壶关OK?


by lipeizheng @ 2024-12-11 20:36:37

试一下 55 100,我这会卡死


by Terrible @ 2024-12-11 20:50:33

@KOTSRwy2

请注意洛谷题目数据可能含有 \r!!,getline 读入后加上这个

if(!n1.empty()&&n1.back()=='\r')n1.pop_back();
if(!n2.empty()&&n2.back()=='\r')n2.pop_back();

by Terrible @ 2024-12-11 20:51:38

这个样例第一行末尾多一个空格也是醉了,是有意提醒 \r 的存在吗?为什么不把数据改规范。


by KOTSRwy2 @ 2024-12-11 21:16:22

@Terrible 谢谢大佬,有用ヾ(≧▽≦*)o,但是只过了第一个测试点。


by KOTSRwy2 @ 2024-12-11 21:17:08

@lipeizheng我在vscode上运行没问题啊


by Terrible @ 2024-12-11 21:18:25

@KOTSRwy2

if(!n2.empty()&&n1.back()=='\r')n2.pop_back();》你复制粘贴上去都不会出这种问题。。。

不过 \r 这种问题可能也就洛谷上有了。


by KOTSRwy2 @ 2024-12-11 21:24:48

@Terrible 加上去了但是就过了一,然后我把测试点二下载了,输出的结果是一样的。


by Terrible @ 2024-12-11 21:28:42

@KOTSRwy2 你代码里两个都是 n1.back()=='\r'。显然后一个应该改为 n2.back()=='\r'


| 下一页