题解 | [NOIP2008]ISBN号码
[NOIP2008]ISBN号码
https://www.nowcoder.com/practice/95712f695f27434b9703394c98b78ee5
#include <stdio.h>
int main() {
char isbn[14];
scanf("%s", isbn);
int sum = 0;
int count = 0; // 用于记录当前是第几个数字(1到9)
for (int i = 0; i < 13; i++) {
if (isbn[i] == '-') {
continue;
}
if (count >= 9) {
break; // 已经处理完前9个数字
}
count++;
int num = isbn[i] - '0'; // 将字符转换为数字
sum += num * count; // 第count个数字乘以count
}
int remainder = sum % 11;
char check = isbn[12];
// 判断识别码是否正确
if ((remainder == 10 && check == 'X') || (remainder != 10 && check == '0' + remainder)) {
printf("Right\n");
} else {
// 输出修正后的ISBN,前12位保持不变
for (int i = 0; i < 12; i++) {
printf("%c", isbn[i]);
}
// 输出正确的识别码
if (remainder == 10) {
printf("X\n");
} else {
printf("%d\n", remainder);
}
}
return 0;
}
