题解 | #[NOIP2008]ISBN号码#
[NOIP2008]ISBN号码
https://www.nowcoder.com/practice/95712f695f27434b9703394c98b78ee5
#include <stdio.h> int main() { int lan,press,number; char X; scanf("%d-%d-%d-%c",&lan,&press,&number,&X);//最后一位按字符形式输入 int sum = lan*100000000+press*100000+number;//把9位数字转换成大整数 int s = 0; //求各个位数乘完求和 int arr[9];//定义一个数组,把大整数遍历放入数组中 for(int i = 8;i >= 0; i--) { arr[i] = sum%10;//对大整数依次取余从各位开始依次放入数组 s = s+arr[i]*(i+1);//对数组中每一位计算 sum = sum/10;//对大整数左移位 } if(s%11==10) { if(X=='X') printf("Right\n"); else printf("%d-%d-%d-X\n",lan,press,number); } else//当得出的整数不是10时 { if(s%11==X-'0')//在ASCII中0为48,例如2在ASCII中为50,转换成数字就是要减去48 printf("Right\n"); else printf("%d-%d-%d-%d\n",lan,press,number,s%11); } return 0; }