杭电1907
2016-04-15 23:35
302 查看
本题为尼姆博弈。对于N堆的糖,一种情况下是每堆都是1,那么谁输谁赢看堆数就可以判断了。对于不都是1的话,初始给的是奇异局势的话,则先取者为赢。初始给的是非奇异局势的话,则先取者为输。(采取异或来判断是否为奇异局势,详细说明见上一篇三类博弈问题。)
#include <iostream> #include <cstdio> using namespace std; int main() { int T,N; int sum,i; int a[50],flag; scanf("%d",&T); while(T--) { flag=1; sum=0; scanf("%d",&N); for(i=1;i<=N;i++) { scanf("%d",&a[i]); if(a[i]!=1)flag=0; } if(flag) { if(N%2==0) { printf("John\n"); } else printf("Brother\n"); } else { for(i=1;i<=N;i++) sum=sum^a[i]; if(sum==0) { printf("Brother\n"); } else printf("John\n"); } } return 0; }
相关文章推荐
- Flume:本地文件到HDFS
- c#复制包含子目录文件夹代码
- 软件工程个人作业05
- fastDFS+nginx配置
- 4.Reverse Words in a String-Leetcode
- javascript的闭包和匿名函数
- Ceph源码目录架构
- nyoj 218Dinner<水>
- STL源码笔记(9)—序列式容器之vector(二)
- 【补充】offset()和position()的区别。
- S3C2451_GPIO初始化、置位、读取源码
- python动态加载模块、类、函数
- Android init源代码分析(1)概要分析
- FBI树
- Android中WebView使用规范
- linux如何安装MyEclipse 2014
- html+css写个blog首页
- init进程【1】——init启动过程
- Linux下mysql使用记录
- 数据缓存——SQLite关系型数据库的使用