【HDU6312】2018杭电多校训练赛第二场Game 解题报告

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=6312

题意:

Alice和Bob正在玩一个游戏。游戏是在一组正整数上进行的,从1到n。在一个步骤中,玩家可以从集合中选择正整数,并从集合中删除所有的除数。如果一个除数不存在,它将被忽略。

Alice和Bob依次选择,直到有人不能选择的(即当前数组为空)时候,这个人就输了。

Alice先取,她想知道她是否能赢。请用“Yes”或“No”来判断。

输入:

有多组测试用例,输入直到文件结束。每组测试用例只有一行,输入n。

输出:

对每个测试用例,输出“Yes”或“No”

分析:

很简单的签到题,是一个博弈题目。

一开始的时候,我是测试n从1到7七种情况,都发现Alice一定是赢的,所以就大胆猜测,全部都是“Yes”。

有理论的推测就是:

因为1是相当于没有的,因为1是所有数的除数,要么你先拿1,要么你无论拿1除外的数都会把1也拿走。

所以如果Alice是先手优势,我就取。

如果是后手优势,我就取1,变成让你先取。

这就是因为1可有可无,所以我可以选择一开始选不选1,来选择对我优势大的。

AC代码:

#include<iostream>
#include<cstdio>
using namespace std;

int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		puts("Yes");

	}
	
 } 

猜你喜欢

转载自blog.csdn.net/mikchy/article/details/81222883