hdu6312

Game

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1773    Accepted Submission(s): 1136


 

Problem Description

Alice and Bob are playing a game.
The game is played on a set of positive integers from 1 to n.
In one step, the player can choose a positive integer from the set, and erase all of its divisors from the set. If a divisor doesn't exist it will be ignored.
Alice and Bob choose in turn, the one who cannot choose (current set is empty) loses.
Alice goes first, she wanna know whether she can win. Please judge by outputing 'Yes' or 'No'.

 

 

Input

There might be multiple test cases, no more than 10. You need to read till the end of input.
For each test case, a line containing an integer n. (1≤n≤500 )

 

 

Output

A line for each test case, 'Yes' or 'No'.

 

 

Sample Input

 

1

 

 

Sample Output

 

Yes

 

题目大意:

给你1-n个数,每一次每一个人取一个数x及x的全部因子,最后谁没有数取了谁输。Alice,先手,问你Alice能否赢得这场胜利。

能输出Yes,否则输出No

题解:

考虑将游戏变成初始时只有2~n,如果先手必胜的话,那么先手第一步按这样取就获胜了;如果后手必胜的话,那 么先手第一步取走1就获胜了。所以全输出Yes就行了。 

因为把1去掉之后,这个序列肯定是有必败态和必胜态的。因为1是所有数的因子,所以当是必胜态时,你只要按照必胜的策略取数,只要你取了一个数,1随之也被去掉了,所以也就变成2-n的序列了。当是必败态时,可以取1把这个状态转给对方,那么自己就可以取胜
ac代码:

#include<iostream>
using namespace std;
int main(){
	int n;
	while(cin>>n){
		cout<<"Yes"<<endl;
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值