题解 | #[NOIP2008]ISBN号码#
[NOIP2008]ISBN号码
https://www.nowcoder.com/practice/95712f695f27434b9703394c98b78ee5
int main()
{
int lan = 0,pub=0,id=0;
char PIN;
scanf("%d-%d-%d-%c", &lan,&pub,&id,&PIN);
int sum = 0,sum1=0,sum2=0;
int pub1=pub,id1=id;//将值保存在另一个变量中
int i = 0;
//求pub的相加之和
for (i = 4; i >= 2; i--)
{
sum += (pub % 10)*i;
pub = pub/10;
}
//求id相加之和
for (i = 9; i >= 5; i--)
{
sum1 += (id % 10) * i;
id = id/10;
}
sum2 = (lan * 1 + sum1 + sum)%11;
//分两种情况,一种是sum2等于10的情况,一种是sum2不为10的情况
//1、为10的情况
while (sum2 == 10)
{
if (PIN=='X')
{
printf("Right");
break;
}
else
{
PIN = 'X';
printf("%d-%d-%d-%c", lan, pub1, id1, PIN);
break;
}
}
//2、不为10的情况
while (sum2 != 10)
{
if (sum2==(int)PIN-'0')//用所输入对应的ASCII值减去'0',即为所表达的数字
{
printf("Right");
break;
}
else
{
printf("%d-%d-%d-%d", lan, pub1, id1, sum2);
break;
}
}
return 0;
}