题目描述
甲, 乙两个人玩 Nim 取石子游戏.
nim 游戏的规则是这样的: 地上有 n 堆石子 (每堆石子数量小于 10000), 每人每次可从任意一堆石子里取出任意多枚石子扔掉, 可以取完, 不能不取. 每次只能从一堆里取. 最后没石子可取的人就输了. 假如甲是先手, 且告诉你这 n 堆石子的数量, 他想知道是否存在先手必胜的策略.
输入格式
第一行一个整数 T<=10, 表示有 T 组数据
接下来每两行是一组数据, 第一行一个整数 n, 表示有 n 堆石子, n<=10000;
第二行有 n 个数, 表示每一堆石子的数量
输出格式
共 T 行, 如果对于这组数据存在先手必胜策略则输出 "Yes", 否则输出 "No", 不包含引号, 每个单词一行.
输入输出样例
输入 #1 复制 2 2 1 1 2 1 0
输出 #1 复制 No Yes
- #include<algorithm>
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<cmath>
- using namespace std;
- int main(){
- int t,n;
- scanf("%d",&t);
- while(t--){
- scanf("%d",&n);
- int ans=0;
- for(int i=1;i<=n;i++){
- int shu;
- scanf("%d",&shu);
- ans^=shu;
- }
- if(!ans){printf("No\n");}
- else{printf("Yes\n");}
- }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-3157265.html