原题链接
①. 题目
②. 思路
- 如果先手时奇数台阶上的值的异或值为0,则先手必败,反之必胜
- 判断奇数为上的台阶
n1^n3^n5^n7.....n=0
先手必胜,若不等于0 先手必败
- 先手时,如果奇数台阶异或非0,根据经典Nim游戏,先手总有一种方式使奇数台阶异或为0
- 当
后手移动偶数
台阶上的石子时,先手只需将对手移动的石子继续移到下一个台阶,这样奇数台阶的石子相当于没变,
- 当
后手移动奇数
台阶上的石子时,留给先手的奇数台阶异或非0,根据经典Nim游戏,先手总能找出一种方案使奇数台阶异或为0
③. 学习点
博弈论
④. 代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int res=0;
for (int i =1; i <=n; i++) {
int x=sc.nextInt();
if(i%2==1) {
res^=x;
}
}
System.out.println(res==0?"No":"Yes");
}
}