poj-2190

来源:互联网 发布:python 弹出消息框 编辑:程序博客网 时间:2024/06/07 05:39

题意:一个ISBN码由10位组成,前9位为数字0~9,第10位为0~9或者X,表示10。ISBN的10位满足,每一位乘以相应系数再求和,求得的和可以被11整除。10位的系数分别为10~1。先给定一个ISBN码,其中一位有缺失,不知其值。请根据上述规则,求缺失的值,或者输出-1表示无解。

#include<fstream>#include<iostream>using namespace std;int main(){    //fstream cin("d:\\test.txt");    string s;    int i,v,x,y;    while(!cin.eof() && cin>>s)    {        v=0;        for(i=0;i<10;++i)        {            if(s[i]=='?')            {                y=i;                continue;            }            if(s[i]=='X')                x=10;            else                x=s[i]-'0';            v+=x*(10-i);        }        v%=11;        if(v==0)            cout<<0<<endl;        else        {            v=11-v;            y=10-y;            while(v%y)                v+=11;            x=v/y;            if(x<10)                cout<<x<<endl;            else if(x==10 && y==1)                cout<<"X"<<endl;            else                cout<<-1<<endl;        }    }    return 0;}



原创粉丝点击