题目描述
甲, 乙两个人玩 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<cstdio>
- #include<algorithm>
- using namespace std;
- const int MAXN=1e6+10,INF=1e9+10;
- int n;
- int main() {
- scanf("%d",&n);
- while(n--) {
- int ans=0,dis;
- scanf("%d",&dis);
- while(dis--) {
- int vis;
- scanf("%d",&vis);
- ans=ans^vis;
- }
- if(!ans) printf("No\n");
- else printf("Yes\n");
- }
- return 0;
- }
- AC
若果说你是雨后烟火, 我愿做一簇火苗.
来源: http://www.bubuko.com/infodetail-2646249.html