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

HINT

【数据规模】

对于40%的数据,T ≤ 250。

对于100%的数据,T ≤ 500。

裸的anti-Nim游戏,结论:若石子堆全为1,根据奇偶性判断(偶数先手胜,否则后手胜);若有一个不等于一,根据异或值得到答案。
证明:戳这里(2009贾志豪论文,提取码:1119)。
 #include<cstdio>
#include<cstdlib>
using namespace std; int ans,one,n; int main()
{
freopen("1022.in","r",stdin);
freopen("1022.out","w",stdout);
int T; scanf("%d",&T);
while (T--)
{
ans = one = ; int a;
scanf("%d",&n);
for (int i = ;i <= n;++i) scanf("%d",&a),ans ^= a,one += (a == );
if (one == n) printf("%s\n",(one&)?"Brother":"John");
else printf("%s\n",ans?"John":"Brother");
}
fclose(stdin); fclose(stdout);
return ;
}
 

最新文章

  1. [Python] 删除指定目录下后缀为 xxx 的过期文件
  2. [原创]java WEB学习笔记104:Spring学习---AOP 前奏,通过一个问题引入动态代理
  3. sql server项目死活启动不了的问题
  4. Sqli-LABS通关笔录-1
  5. Safari里使用JsonView
  6. iPad开发(相对于iPhone开发时专有的API)
  7. FZOJ2110 star(DFS)
  8. [转]将某个Qt4项目升级到Qt5遇到的问题
  9. 能用存储过程的DBHelper类
  10. D - 棋盘游戏 - HDU 1281(二分图匹配)
  11. Go语言程序的状态监控
  12. 基于android的实时音频频谱仪
  13. 【Matlab编程】Matlab让电脑失而复得
  14. Jdon框架开发指南
  15. JSON 和 JSONP 两兄弟
  16. 根据request获取请求客户端的外网ip
  17. 1、js比较日期的大小
  18. Oracle如何查询当前的crs/has自启动状态
  19. Zookeeper .Net客户端代码
  20. VMware虚拟CentOS 6.5在NAT模式下配置静态IP地址及Xshell远程控制配置

热门文章

  1. C语言--函数
  2. SpringMVC DispatcherServlet 说明与web配置
  3. oracle恢复被覆盖的存储过程
  4. gitlab 启动参考
  5. MYSQL查询计划KEY_LEN
  6. TCP SOCKET中backlog参数的用途是什么? ---图解
  7. 实例详解 EJB 中的六大事务传播属性--转
  8. HTTPS是如何保证连接安全:每位Web开发者都应知道的
  9. DataView操作DataTable
  10. C# var