证明:
1. a1 ^ a2 ^ ... ^ an = x != 0
x的二进制表示中最高一位1在第k位
a1~an中必然存在一个数ai, ai的第k位是1
ai ^ x < ai
从ai中拿走 ai - (ai ^ x)个石子 (由于ai ^ x < ai 所以 ai - (ai ^ x) > 0 是合法的)
ai - ( ai - (ai ^ x)) = ai ^ x, 剩下ai ^ x
a1 ^ a2 ^ .. ai ^ x .. ^ an = x ^ x = 0
所以我们一定可以拿走ai - (ai ^ x)个石子, 使得剩余的石子异或起来 = 0
2. a1 ^ a2 ^ .. ai .. ^ an = x = 0 式子1
无论怎么拿,剩余的数异或起来一定 != 0
反证法:
假设a1 ^ a2 ^ .. ai` .. ^ an = x != 0 式子2
式子1 ^ 式子2 --> ai ^ ai` = 0, --> ai = ai`
如果一定要拿的话, 剩余的ai` 一定小于 ai, 但是上述式子ai 等于 ai, 矛盾了。
证明完毕。
import java.io.*;
class Main{
static BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws Exception{
int n = Integer.valueOf(read.readLine());
int res = 0;
String[] ss = read.readLine().split(" ");
for(int i = 0; i < n; i++){
res ^= Integer.valueOf(ss[i]);
}
if(res == 0) System.out.println("No");
else System.out.println("Yes");
}
}