1022: [SHOI2008]小约翰的游戏John

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 3150  Solved: 2013
[Submit][Status][Discuss]

Description

  小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取
的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取,我们规定取到最后一
粒石子的人算输。小约翰相当固执,他坚持认为先取的人有很大的优势,所以他总是先取石子,而他的哥哥就聪明
多了,他从来没有在游戏中犯过错误。小约翰一怒之前请你来做他的参谋。自然,你应该先写一个程序,预测一下
谁将获得游戏的胜利。

Input

  本题的输入由多组数据组成第一行包括一个整数T,表示输入总共有T组数据(T≤500)。每组数据的第一行包
括一个整数N(N≤50),表示共有N堆石子,接下来有N个不超过5000的整数,分别表示每堆石子的数目。

Output

  每组数据的输出占一行,每行输出一个单词。如果约翰能赢得比赛,则输出“John”,否则输出“Brother”
,请注意单词的大小写。

Sample Input

2
3
3 5 1
1
1

Sample Output

John
Brother

code

sj定理: 先手必胜当且仅当:(1)游戏的SG函数不为0且游戏中某个单一游戏的SG函数大于1;(2)游戏的SG函数为0且游戏中没有单一游戏的SG函数大于1。

 #include<cstdio>
#include<algorithm> using namespace std;
int f[];
//sg[i] = i;
int main () {
int T,n;
scanf("%d",&T);
for (int Case=; Case<=T; ++Case) {
scanf("%d",&n);
bool flag = false;
int ans = ;
for (int t,i=; i<=n; ++i) {
scanf("%d",&t);
ans ^= t;
if (t > ) flag = true;
}
if ((ans==&&!flag)||(ans!=&&flag)) puts("John");
else puts("Brother");
}
return ;
}

最新文章

  1. Linux查看系统状态命令
  2. 第二轮冲刺-Runner站立会议09
  3. cocos的helloworld写法
  4. jQuery fullPage.js 全屏滚动
  5. JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
  6. VC中调用COM组件的方法(转载)
  7. Oracle 10g设置IP访问限制
  8. ***PHP多线程pthreads 实现QQ号码爬虫
  9. angularJS vs backbone
  10. PreparedStatement可以有效地防止sql被注入
  11. StartService与BindService
  12. 在自定义的js验证规则中调用magento的VarienForm方法验证表单
  13. 小白之微信小程序第一次完成搭建本地服务与页面进行交互
  14. JHipster生成单体架构的应用示例
  15. 1. dubbo概述
  16. Flask 初印象
  17. Cowboy实例
  18. iphone微信 h5页音乐自动播放
  19. python MD5步骤
  20. eclipse中不能找到dubbo.xsd报错”cvc-complex-type.2.4.c“的 两种解决方法

热门文章

  1. npm安装使用淘宝代理的方法(设置registry参数)
  2. 移植mavlink协议到STM32详细教程
  3. NumPy(数组计算)
  4. HDU4352 XHXJ&#39;s LIS(LIS 状压)
  5. Javascript Number
  6. 使用HTML5 canvas做地图(1)基础知识
  7. 使用kvm制作Eucalyptus镜像(CentOS 6.5为例)
  8. N 叉树的层序遍历
  9. Python之自定义封装一个简单的Log类
  10. centos6.5_64bit安装Redis3.2.8