poj 2190 ISBN

简介:

一次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;
		
		else
			num=ISBN[i]-48;
		
		sum+=(10-i)*num;
	}
	
	//printf("%d\n",sum);
	find(sum,pos);
}

int main()
{
	//输入
	scanf("%s",ISBN);
	
	work();
	
	return 0;
}




相关文章
|
算法 Java 文件存储