下载测试点自测无误 交上去全WA

P1015 [NOIP1999 普及组] 回文数

jimmyforever @ 2024-07-31 15:36:05

自认为无误的代码爆零 四个测试点全WA 样例自测没有问题 又下载了第一个测试点 2 10011 答案是STEP=4 我的程序跑出来完全一致的结果 不知道为什么WA...


by Otue @ 2024-07-31 15:36:59

@jimmyforever 把代码放出来。


by jimmyforever @ 2024-07-31 15:38:41

@jimmyforever

#include<iostream>
#include<string>
using namespace std;
int A[205],B[205],C[205],D[205];
int main()
{
    int N;
    string M;
    cin>>N;
    getline(cin,M);
    for(int i=1;i<=M.size()-1;i++)
    {
        A[i]=M[M.size()-i]-'0';
        B[i]=M[i]-'0';
        C[i]=A[i]+B[i];
    }
    int len=M.size();
    int j=1;
    while(j>=1)
    {
        if(j>30)
        {
            cout<<"Impossible!";
            break;
        }
        for(int i=1;i<=len-1;i++)
        {
            if(C[i]>=N)
            {
                C[i]=C[i]-N;
                C[i+1]++;
            }
        }
        if(C[len]>0)
        {
            len++;
        }
        int m=0;
        for(int i=1;i<=len-1;i++)
        {
            if(C[i]==C[len-i])
            {
                m++;
            }
        }
        if(m==len-1)
        {
            cout<<"STEP="<<j;
            break;
        }
        else
        {
            m=0;
        }
        for(int i=1;i<=len-1;i++)
        {
            D[i]=C[i];
        }
        for(int i=1;i<=len-1;i++)
        {
            A[i]=D[len-i];
            B[i]=D[i];
            C[i]=A[i]+B[i];
        }
        j++;
    }
    return 0;
}

by lianchanghua @ 2024-07-31 15:40:33

@jimmyforever 《运行时错误》 你在 Luogu IDE 试一下


by lianchanghua @ 2024-07-31 15:44:16

@jimmyforever

初步诊断为 getline 的问题,还有一个点 WA,就不知道为什么了

#include<iostream>
#include<string>
using namespace std;
int A[205],B[205],C[205],D[205];
int main()
{
    int N;
    string M;
    cin>>N;
    cin>>M;
    M=" "+M;
    for(int i=1;i<=M.size()-1;i++)
    {
        A[i]=M[M.size()-i]-'0';
        B[i]=M[i]-'0';
        C[i]=A[i]+B[i];
    }
    int len=M.size();
    int j=1;
    while(j>=1)
    {
        if(j>30)
        {
            cout<<"Impossible!";
            break;
        }
        for(int i=1;i<=len-1;i++)
        {
            if(C[i]>=N)
            {
                C[i]=C[i]-N;
                C[i+1]++;
            }
        }
        if(C[len]>0)
        {
            len++;
        }
        int m=0;
        for(int i=1;i<=len-1;i++)
        {
            if(C[i]==C[len-i])
            {
                m++;
            }
        }
        if(m==len-1)
        {
            cout<<"STEP="<<j;
            break;
        }
        else
        {
            m=0;
        }
        for(int i=1;i<=len-1;i++)
        {
            D[i]=C[i];
        }
        for(int i=1;i<=len-1;i++)
        {
            A[i]=D[len-i];
            B[i]=D[i];
            C[i]=A[i]+B[i];
        }
        j++;
    }
    return 0;
}

by jimmyforever @ 2024-07-31 15:46:39

@lianchanghua 在洛谷IDE上面确实是运行时错误 但用devcpp跑都没问题 实在是想不通


by lianchanghua @ 2024-07-31 15:47:26

@jimmyforever 应该是 windows 系统的问题


by jimmyforever @ 2024-07-31 16:30:07

@lianchanghua 哦是因为16进制的问题 改正后已AC 谢谢! 此贴终结


|