50分求助!

P1055 [NOIP2008 普及组] ISBN 号码

@[gsc15759915601](/user/978170) ISBN号码最后一位有可能是X,你判断了吗? 不解释了,奉上我的代码: ```cpp #include<bits/stdc++.h> using namespace std; int main(){ string a; cin>>a;//输入 int s[9]; int j=0,o=0; for(int i=0;i<12;i++){ if(a[i]!='-'){ s[j]=a[i]-'0'; j++;//存每位非'-'的值,之后方便计算。 } } for(int i=0;i<9;i++){ o+=(s[i]*(i+1));//求和 } if(o%11==10 && a[a.length()-1]=='X'){ cout<<"Right"; } else if(o%11==10 && a[a.length()-1]!='X'){ for(int i=0;i<12;i++){ cout<<a[i]; } cout<<'X'; } else if(o%11==a[a.length()-1]-'0'){ cout<<"Right"; } else{ for(int i=0;i<12;i++){ cout<<a[i]; } cout<<o%11; }//这些情况需要分类讨论 return 0; } ``` 互关一下吧,我先关了,关了私信
by __Ending__ @ 2023-07-10 12:21:27


谢谢各位
by gsc15759915601 @ 2023-07-10 12:40:35


代码已改正: ```cpp #include<bits/stdc++.h> using namespace std; long long n[11],m = 0,x,y,z; char s[15],str; int main(){ for(long long i = 1;i<=13;i++){ cin>>s[i]; } for(long long i = 1;i<=13;i++){ if(i<2){ n[i] = s[i]-'0'; }else if(i>2&&i<6){ n[i-1] = s[i]-'0'; }else if(i>6&&i<12){ n[i-2] = s[i]-'0'; } } for(long long i = 1;i<=9;i++){ m += n[i]*i; } m %= 11; if(m==10){ str = 'X'; }else{ str = m+'0'; } if(str==s[13]){ cout<<"Right"; return 0; } for(long long i = 1;i<=12;i++){ cout<<s[i]; } cout<<str; return 0; } ```
by gsc15759915601 @ 2023-07-10 12:47:14


|