题解:P1055 [NOIP2008 普及组] ISBN 号码

· · 题解

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;
}