博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【bzoj1022】[SHOI2008]小约翰的游戏John 博弈论
阅读量:5172 次
发布时间:2019-06-13

本文共 806 字,大约阅读时间需要 2 分钟。

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

Sol

反nim游戏裸题,证明和题解网上一大把。

我太懒了qwq。

Code

#include 
int T,n,ok,ans,x,m;int main(){ for(scanf("%d",&T);T--;ok=ans=0) { for(scanf("%d",&n),m=n;n--;) scanf("%d",&x),ans^=x,ok+=(x>1); if(!ok) puts(m%2?"Brother":"John");else puts(ans?"John":"Brother"); }}

转载于:https://www.cnblogs.com/CK6100LGEV2/p/9433736.html

你可能感兴趣的文章
为什么你应该开始学习编程了
查看>>
BP人工神经网络的介绍与实现
查看>>
从44.556677想到的
查看>>
创建第一个Djiago
查看>>
OpenFire 安装及配置
查看>>
jquery.blockUI.2.31.js 弹出层项目介绍
查看>>
MongoDB应用上的坑
查看>>
【转】commons-lang.jar包简介
查看>>
【转】拉勾网 - 《2016互联网职场生态白皮书》
查看>>
java生成随机验证图片的实现
查看>>
javascript——创建对象模型1
查看>>
[asp.net mvc 奇淫巧技] 06 - 也许你的项目同一个用户的请求都是同步的
查看>>
Unity Behaviors for Interception
查看>>
Servlet & JSP - 转发与重定向的区别
查看>>
Ehcache(2.9.x) - API Developer Guide, Write-Through and Write-Behind Caches
查看>>
双相障碍
查看>>
通用权限管理系统基类中数据库的连接
查看>>
第二次实训作业
查看>>
计算2条线的相交点
查看>>
HDU 3639 Hawk-and-Chicken
查看>>