为什么过不了,求大佬指点

P1055 [NOIP2008 普及组] ISBN 号码

Konnyaku_q @ 2023-09-13 20:23:23

0分,觉的没啥不对啊

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
using namespace std;
long long a,b[20];
char  s[15],f[6];
int main()
{
   cin>>s[1]>>f[1]>>s[2]>>s[3]>>s[4]>>f[2]>>s[5]>>s[6]>>s[7]>>s[8]>>s[9]>>f[3]>>s[10];
    if(s[10]=='X')
   {
        b[10]=10;   

   }
   for(int i=1;i<=10;i++)
   {
      b[i]=s[i]-'0';
      a+=b[i]*i;
   }
   a=a%11;

   if(b[10]==a)
   {
     cout<<"Right"<<endl;
     return 0;
  } 
  else
  {
    if(a>=10)
    {
    cout<<s[1]<<f[1]<<s[2]<<s[3]<<s[4]<<f[2]<<s[5]<<s[6]<<s[7]<<s[8]<<s[9]<<f[3]<<"X";

    }
    cout<<s[1]<<f[1]<<s[2]<<s[3]<<s[4]<<f[2]<<s[5]<<s[6]<<s[7]<<s[8]<<s[9]<<f[3]<<a;
  }

}

by TuNingyou2341 @ 2023-09-13 20:42:43

下面加个else 第一眼看过去看出来的 再不行回我(因为我比较懒)


by Konnyaku_q @ 2023-09-13 20:44:06

@TuNingyou2341 不行


by xuchuhan @ 2023-09-13 20:44:16

@Konnyaku_q 您算识别码时算上了 s[10],实际上不要算,可以改为:

for(int i=1;i<=9;i++)
{
    b[i]=s[i]-'0';
   a+=b[i]*i;
}

by xuchuhan @ 2023-09-13 20:45:21

同时 s[10] 不为 X 时也要算 b[10]


by Konnyaku_q @ 2023-09-13 20:46:11

@xuchuhan 结果是对了但他不输出Right


by Konnyaku_q @ 2023-09-13 20:48:03

@xuchuhan 请问您说“同时 s[10] 不为 X 时也要算 b[10]。”是什么意思


by xuchuhan @ 2023-09-13 20:49:59

@Konnyaku_q 不应该呀,您看看您把 b[10] 改了没有。

就这样改:

if(s[10]=='X')
   {
        b[10]=10;   

   }

变成

if(s[10]=='X')
   {
        b[10]=10;   

   }
else{
  b[10]=s[10]-'0';
}

by Konnyaku_q @ 2023-09-13 20:56:16

@xuchuhan 栓Q


|