POJ 2190 && HDU 2714 ISBN(水~)

来源:互联网 发布:爱奇艺 网络环境危险 编辑:程序博客网 时间:2024/06/08 15:22

Description
验证书籍的ISBN码,给出一个10位ISBN码,前9位中每一位的值在0-9之间,最后一位的值在0-X之间(X为10)。从第一位开始,按照第一位的数字乘以10+第二位数字乘以9+···+第十位数字乘以1的形式求和,若其和能整除11,则为有效ISBN码.输入一串10位ISBN码,其中有一位是?。
输出该?位置上的数字,若不存在,输出-1
Input
一个10位ISBN码
Output
输出?位置上的数字,若不存在,输出-1
Sample Input
15688?111X
Sample Output
1
Solution
水题
Code

#include<iostream>using namespace std;int main(){    char s[10];    while(cin>>s)    {        int i,flag,res=0;        for(i=0;i<10;i++)        {            if(s[i]>='0'&&s[i]<='9')//是数字则乘其权值累加                 res+=(s[i]-'0')*(10-i);            else if(s[i]=='X')//是X则加10                 res+=10;            else if(s[i]=='?')//是?则记录其权值                 flag=10-i;        }        for(i=0;i<=10;i++)//枚举?处数字             if((res+flag*i)%11==0)                break;        if(i==10)        {            if(flag!=1)//不存在可行解                 cout<<"-1"<<endl;            else//?是X                 cout<<"X"<<endl;        }        else            cout<<i<<endl;    }    return 0;}
0 0
原创粉丝点击