0分求助!

P1055 [NOIP2008 普及组] ISBN 号码

不用算这个号码的长度,因为题目已经说出**保证输入符合ISBN号码的格式要求**了,所以s.size不需要。 ------------ 循环开始就不太对了,第一个分支包括了最后一个数,我的思路是从开头开始算,算到倒数第二个数字,然后用这些乘积的和模11,如果与最后一个数字相同输出Right,不然就将最后一个数字改为模后的余数。所以循环只要到倒数第二个数字(位于第十一位)就行了。 代码: ```c #include<iostream> #include<cstring> using namespace std; string s; int i,c=1,all; long long sum=0; int main() { getline(cin,s); for(i=0;i<=10;i++) if(s[i]!='-') sum+=(s[i]-48)*c++; all=sum%11; if(all==s[12]-48 || (all%11==10 && s[12]=='X')) printf("Right"); else { for(i=0;i<=11;i++) printf("%c",s[i]); if(all!=10) printf("%d",all); else printf("X"); } } ```
by sxjsxj @ 2023-06-26 17:25:04


|