怎么全是RE啊啊啊啊啊啊

P1055 [NOIP2008 普及组] ISBN 号码

Chinami_Nagisa @ 2024-01-09 13:32:17

#include <iostream>
#define maxn 12
#define m 11
using namespace std;
int main(){
    int i=1,n=0,x;
    char s[114],c;
    while((s[n++]=getchar())!='\n');
    for(n=0;n<maxn;n++)                       
    {
        if(n!=1&&n!=5&&n!=11)
        {
            x+=(s[n]-'0')*i;
            i++;
        }
    }
    x%=m;
    if(x!=10)
    {
        if(s[maxn]-'0'==x)                         
            cout<<"Right";
        else
        {
            s[maxn]=x+'0';
            for(n=0;n<=maxn;n++)
            putchar(s[n]);
        }
    }
    else
    {
        if(s[maxn]=='X')
        cout<<"Right";
        else
        {
            s[maxn]='X';
            for(n=0;n<=maxn;n++)
            putchar(s[n]);
        }
    }
    return 0;
}

by lizhengfei0824 @ 2024-01-09 13:41:18

很简单如下:

#include<bits/stdc++.h>
using namespace std;
char s[20];
int main()
{
    int ans;
    scanf("%s",s);
    ans=(s[0]-'0')*1+(s[2]-'0')*2+(s[3]-'0')*3+(s[4]-'0')*4+(s[6]-'0')*5+(s[7]-'0')*6+(s[8]-'0')*7+(s[9]-'0')*8+(s[10]-'0')*9;
    ans=ans%11;
    if(ans==10)
    {
        if(s[12]=='X')
        {
            printf("Right\n");
        }
        else
        {
            s[12]='X';
            printf("%s\n",s);
        }
    }
    else if(ans==s[12]-'0')
    {
        printf("Right\n");
    }
    else
    {
        s[12]=ans+'0';
        printf("%s\n",s);
    }
    return 0;
}

by forever_nope @ 2024-01-09 14:44:43

main 函数第一行:int i=1,n=0,x;

x 需要赋值,改为:int i=1,n=0,x=0;

因为 x 没有赋值,直接进行运算,是 UB。


by Chinami_Nagisa @ 2024-01-10 13:04:39

@RainPPR 谢谢大佬,已修改,但问题还是没有解决。 调试的过程中没有出现任何问题,查了一下也并没有什么数组越界的情况,就一直报错,折腾很长时间了


by forever_nope @ 2024-01-10 14:01:08

@Chinami_Nagisa 即答:输入方式不对。

根本原因是本题输入格式中,最后一行不是换行。

因此你写的 getchar() 什么什么的 !='\n' 就不对了。

可以加一个 !=EOF,或者建议使用 scanf 或者 cin 输入。

我实测仅将第 8 行替换为 scanf("%s",s); 就可以 AC。

https://www.luogu.com.cn/record/142416205。


by forever_nope @ 2024-01-10 14:02:01

@Chinami_Nagisa 有一个方法。

善用 Codeforces 的 Custom test 的 Clang 语言()

特别好用。在找 RE 的时候()

https://codeforces.com/problemset/customtest


|