我想不通了,一道简单的题目做了半年才50分......

P1055 [NOIP2008 普及组] ISBN 号码

```c #include <bits/stdc++.h> using namespace std; int main() { char a[100]; scanf("%c-%c%c%c-%c%c%c%c%c-%c", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7], &a[8], &a[9]); int sum = 0,remainder; char ch; for (int i = 0; i < 9; i++) { sum += (a[i] - '0') * (i + 1); } remainder = sum % 11; if (remainder == 10) ch = 'X'; else ch = remainder + '0'; if (ch == a[9]) printf("Right\n"); else printf("%c-%c%c%c-%c%c%c%c%c-%c\n", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], ch); return 0; } ``` 仅供参考 ------------ 不要脸的求个关
by wzj0829 @ 2023-08-26 19:42:13


如果你真是每天做,建议换道题或者参考题解 如果不是,建议你每天做8小时(
by clarkwang @ 2023-08-26 19:50:12


@[zhonghongye](/user/783665) 你忘了一个地方,当余数为10时,识别码位X # AC代码 ```cpp #include<bits/stdc++.h> using namespace std; int main() { string a; int s=0,n1,n2,b,k=1; cin>>a; for(int i=0;i<12;i++) { if(a[i]=='-') continue; else { b=a[i]-'0'; s=s+b*k; k++; } } n1=a[12]-'0'; n2=s%11; if(n1==n2||(n2==10&&a[12]=='X'))//新增一个余数为10的特判,此时a[12]应该等于X cout<<"Right"; else { for(int i=0;i<12;i++) cout<<a[i]; if(n2==10)//特判 { cout<<'X'; } else { cout<<n2; } } return 0; } ```
by oier04 @ 2023-08-26 19:56:34


@[zhonghongye](/user/783665) 所以以后要认真读题啊,顺便求个关注QAQ
by oier04 @ 2023-08-26 19:57:26


@[zhonghongye](/user/783665) 我的最简单易懂,且最短! ```cpp #include<bits/stdc++.h> using namespace std; string a; int sum,k,ans; char ansc; int main() { cin>>a; for(int i=0;i<a.size()-2;i++){ if(a[i]!='-'){ k++; sum+=(a[i]-'0')*k; } } sum%=11; if(sum==10)ansc='X'; else ansc=sum+'0'; if(a[12]==ansc)cout<<"Right"<<endl; else{ for(int i=0;i<a.size()-1;i++)cout<<a[i]; cout<<ansc<<endl; } } ``` 求关(QWQ)
by zcy_jake @ 2023-08-27 09:36:31


@[zcy_jake](/user/1041218) 但你用的是你自己的代码,我是用他的代码调试的
by oier04 @ 2023-08-27 14:05:23


要考虑有 `X` 的情况。
by hang2023 @ 2023-09-02 14:58:22


谢谢奥!
by zhonghongye @ 2023-09-03 19:40:55


|