题解 | [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;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务