原题链接
①. 题目
②. 思路
- 必胜状态,先手进行某一个操作,留给后手是一个必败状态时,对于先手来说是一个必胜状态。即先手可以走到某一个必败状态。
- 必败状态,先手无论如何操作,留给后手都是一个必胜状态时,对于先手来说是一个必败状态。即先手走不到任何一个必败状态。
- n堆石子 每一堆有a1 a2 a3 …an
- 先手必胜状态
a1^a2^a3^a4...^an !=0
所以先手异或不等于0,存在取法让后手异或为0 - 先手必败状态
a1^a2^a3^a4...^an =0
所以先手异或得0,无论怎么取都无法让后手异或为0 - 操作到最后时,每堆石子数都是
0^0^0^…0
=0
- 在操作过程中,如果
a1⊕a2⊕…⊕an=x≠0
。那么玩家必然可以通过拿走某一堆若干个石子将异或结果变为0。 - 如果
a1⊕a2⊕…⊕an=0
,那么无论玩家怎么拿,必然会导致无法让后手异或为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=1;
while(n-->0) {
int a=sc.nextInt();
res^=a;
}
System.out.println((res^1)!=0?"Yes":"No");
}
}