这个怎么写,十个数字的isbn码包含?处丢失的数字,求?处有无数字可以组成合法的isbn码,如果有输出1没有输出-1
isbn = "123456789?12" #这里你换成 input(),我在线测试写死的。
valid = False
# 枚举0-9的数字,替换?处并校验是否合法
for i in range(10):
test_isbn = isbn.replace("?", str(i))
s = 0
for j in range(1, 13):
# 根据规则计算ISBN码校验位
s += (10 - j) * int(test_isbn[j-1])
check_digit = (11 - s % 11) % 11
if check_digit == int(test_isbn[-1]):
valid = True
break
# 输出结果
if valid:
print("1")
else:
print("-1")
不知道你这个问题是否已经解决, 如果还没有解决的话:链接
[NOIP2008]ISBN号码_牛客题霸_牛客网 (nowcoder.com)
#include<stdio.h>
int main()
{
char arr[13]={0};
int i,j;
scanf("%s",arr);
int s=0;
for(i=0,j=1;i<11;i++){
if(arr[i]!='-'){
s += (arr[i]-'0')*j;
j++;
}
}
int m=s%11;
if(m == arr[12]-'0' || (m==10 && arr[12]=='X')){
printf("Right\n");
}else{
if(m==10){
for(i=0;i<12;i++){
printf("%c",arr[i]);
}
printf("X");
}else{
for(i=0;i<12;i++){
printf("%c",arr[i]);
}
printf("%d",m);
}
}
return 0;
}