题意:验证书籍的ISBN码,给出一个10位ISBN码,
前9位中每一位的值在0-9之间,最后一位的值在0-X之间(X为10)。从第一位开始,按照第一位的数字乘以10+第二位数字乘以9+···+第十位数字乘以1的形式求和,若其和能整除11,则为有效ISBN码。
输入一串10位ISBN码,其中有一位是?。
输出该?位置上的数字,若不存在,输出-1。
代码:
#include
#include
using
namespace
std
;
int
main
()
{
string
a
;
int
sum
,
k
;
while
(
cin
>>
a
)
{
sum
=
0
;
for
(
int
i
=
0
,
j
=
10
;
i
<</span>10;i++,j--)
{
if(a[i]=='?')k=i;
else if(a[i]=='X')sum+=j*10;
else sum+=j*(a[i]-48);
}
if(k==9)
{
int i;
for(i=0;i<</span>11;i++)
{
sum+=i;
if(sum%11==0)
{
if(i<</span>10)
cout<<i<<endl;
else
cout<<'X'<<endl;
break;
}
sum-=i;
}
if(i==11)cout<<-1<<endl;
}
else
{
int i;
for(i=0;i<</span>10;i++)
{
sum+=i*(10-k);
if(sum%11==0)
{
cout<<i<<endl;
break;
}
sum-=i*(10-k);
}
if(i==10)cout<<-1<<endl;
}
}
return 0;
}
#include
using
int
{
}