HDU 6312 Game(思维题)

Game

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

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

扫描二维码关注公众号,回复: 2447935 查看本文章

 题意:

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

能输出Yes,否则输出No

解析:

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

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

#include <cstdio>
#include <cstring>

int main()
{
    int n;

    while(~scanf("%d",&n))
        printf("Yes\n");

}

猜你喜欢

转载自blog.csdn.net/qq_37025443/article/details/81214403