全RE求助

P1055 [NOIP2008 普及组] ISBN 号码

CHkuakeU @ 2024-10-20 21:41:21

全爆{\color{purple}RE},不知道怎么办。

代码如下:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a[10];
    int sum=0,tp=0;
    char leg;
    char g,h,w;
    scanf("%d-%d%d%d-%d%d%d%d%d-%c",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],leg);
    if(leg=='X')
    {
        tp=10;
    }
    else
    {
        tp=leg-'0';
    }
    for(int i=1;i<=9;i++)
    {
        sum+=a[i]*i;
    }
    sum%=11;
    if(sum==tp)
    {
        cout<<"Right";
    }
    else if(tp!=10)
    {
        cout<<a[1]<<"-"<<a[2]<<a[3]<<a[4]<<"-"<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<"-"<<tp;
    }
    else
    {
        cout<<a[1]<<"-"<<a[2]<<a[3]<<a[4]<<"-"<<a[5]<<a[6]<<a[7]<<a[8]<<a[9]<<"-X";

    }
}

by wuyuxuan12345678 @ 2024-10-20 21:42:25

把a[10]开大点,比如a[100]


by CHkuakeU @ 2024-10-20 21:43:39

@wuyuxuan12345678 好的谢谢


by CHkuakeU @ 2024-10-20 21:44:20

@wuyuxuan12345678 这下全WA了


by wuyuxuan12345678 @ 2024-10-20 21:45:35

WA$一般是代码有问题,$RE$一般是数组太小或者开了$O2

by wuyuxuan12345678 @ 2024-10-20 21:46:33

你先加个return 0试试


by wuyuxuan12345678 @ 2024-10-20 21:47:39

你这个scanf("%d-%d%d%d-%d%d%d%d%d-%c",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],leg);不能这么写吧


by wuyuxuan12345678 @ 2024-10-20 21:49:41

您可以用string leg直接输入整个字符串,再用个循环判断-和数字


by CHkuakeU @ 2024-10-20 21:51:30

@wuyuxuan12345678 谢谢,已{\color{green}AC}

问题就出在改了之后的cin和输出上

最后结尾的判断和输出应该是sum而非tp


|