GameTime 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.
Input There might be multiple test cases, no more than 10. You need to read till the end of input.
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;
}