当前位置: 代码迷 >> 综合 >> poj 2190 ISBN
  详细解决方案

poj 2190 ISBN

热度:52   发布时间:2024-01-11 16:41:03.0

一次A!

这种题目要得就是思路清晰,细心,考虑周全。。。

然后。。然后就没了。。。


注意字符串和int型数据的转来转去。。。


AC的代码:

#include <stdio.h>char ISBN[12];void find(int sum,int pos)
{//找出那个数字是什么int i;if(pos!=9 && pos!=-1){//如果不是最后一位看不清for(i=0;i<=9;i++){if( (sum+i*(10-pos))%11==0 ){printf("%d\n",i);return;}}}else if(pos==9  && pos!=-1){for(i=0;i<=10;i++){if((sum+i*(10-pos))%11==0 && i==10){printf("X\n");return;}if( (sum+i*(10-pos))%11==0)	{printf("%d\n",i);return;}}}printf("-1\n");
}void work()
{int pos=-1;//存放问号位置int i;int sum=0;//算除了问号位的总和int num;//每一位数的整型形式for(i=0;i<10;i++){if(ISBN[i]=='?'){pos=i;continue;}if(ISBN[i]=='X')num=10;elsenum=ISBN[i]-48;sum+=(10-i)*num;}//printf("%d\n",sum);find(sum,pos);
}int main()
{//输入scanf("%s",ISBN);work();return 0;
}