閱讀806 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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




最後更新:2017-04-03 05:39:54

  上一篇:go 通用宏
  下一篇:go 【二分匹配】HDU1068-Girls and Boys