题解:P1055 [NOIP2008 普及组] ISBN 号码
mairuisheng · · 题解
P1055 [NOIP2008 普及组] ISBN 号码
算法:模拟
分析:先把前面的数字按题目要求得到乘积,再把所得乘积取模得到余数,再检验它是否与识别码相同,如果相同,输出 Right;否则把除了识别码的字符串按顺序输出,最后输出余数,注意:当余数为十时,输出 X。
#include<bits/stdc++.h>
using namespace std;
char a[14];
long long i,sum=0,co,j=0;
int main()
{
for(i=1;i<=13;i++)
{
cin>>a[i];
if(a[i]!='-'&&i!=13)
{
j++;
sum+=(a[i]-48)*j;
}
}
if(a[13]=='X')co=10;
else
{
co=(a[13]-48);
}
if(sum%11==co)
{
cout<<"Right";
return 0;
}
else
{
for(i=1;i<=12;i++)
{
cout<<a[i];
}
if(sum%11!=10)cout<<sum%11;
else cout<<"X";
}
return 0;
}