hdu1907 John (尼姆博弈)
2016-07-26 20:28
375 查看
John
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 4183 Accepted Submission(s): 2385
Problem Description
Little John is playing very funny game with his younger brother. There is one big box filled with M&Ms of different colors. At first John has to eat several M&Ms of the same color. Then his opponent has to make a turn. And so on. Please note that each player has to eat at least one M&M during his turn. If John (or his brother) will eat the last M&M from the box he will be considered as a looser and he will have to buy a new candy box.
Both of players are using optimal game strategy. John starts first always. You will be given information about M&Ms and your task is to determine a winner of such a beautiful game.
Input
The first line of input will contain a single integer T – the number of test cases. Next T pairs of lines will describe tests in a following format. The first line of each test will contain an integer N – the amount of different M&M colors in a box. Next line will contain N integers Ai, separated by spaces – amount of M&Ms of i-th color.
Constraints:
1 <= T <= 474,
1 <= N <= 47,
1 <= Ai <= 4747
Output
Output T lines each of them containing information about game winner. Print “John” if John will win the game or “Brother” in other case.
Sample Input
2
3
3 5 1
1
1
Sample Output
John
Brother
题意:n堆石子,每次可以从一堆石子中选取若干,最少1个,谁最后拿完谁输.
思路:尼姆博弈,只不过判断一下全部为1的情况.
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 4183 Accepted Submission(s): 2385
Problem Description
Little John is playing very funny game with his younger brother. There is one big box filled with M&Ms of different colors. At first John has to eat several M&Ms of the same color. Then his opponent has to make a turn. And so on. Please note that each player has to eat at least one M&M during his turn. If John (or his brother) will eat the last M&M from the box he will be considered as a looser and he will have to buy a new candy box.
Both of players are using optimal game strategy. John starts first always. You will be given information about M&Ms and your task is to determine a winner of such a beautiful game.
Input
The first line of input will contain a single integer T – the number of test cases. Next T pairs of lines will describe tests in a following format. The first line of each test will contain an integer N – the amount of different M&M colors in a box. Next line will contain N integers Ai, separated by spaces – amount of M&Ms of i-th color.
Constraints:
1 <= T <= 474,
1 <= N <= 47,
1 <= Ai <= 4747
Output
Output T lines each of them containing information about game winner. Print “John” if John will win the game or “Brother” in other case.
Sample Input
2
3
3 5 1
1
1
Sample Output
John
Brother
题意:n堆石子,每次可以从一堆石子中选取若干,最少1个,谁最后拿完谁输.
思路:尼姆博弈,只不过判断一下全部为1的情况.
/* *********************************************** Author : AnICoo1 Created Time : 2016-07-25-19.51 Monday File Name : D:\MyCode\No.2\main.cpp LANGUAGE : C++ Problem : hdu 1907 Copyright 2016 clh All Rights Reserved ************************************************ */ #include<stdio.h> #include<math.h> #include<string.h> #include<stack> #include<set> #include<map> #include<queue> #include<vector> #include<iostream> #include<algorithm> #define MAXN 1010000 #define LL long long #define ll __int64 #define INF 0xfffffff #define mem(x) memset(x,0,sizeof(x)) #define PI acos(-1) #define eps 1e-8 using namespace std; ll gcd(ll a,ll b){return b?gcd(b,a%b):a;} ll lcm(ll a,ll b){return a/gcd(a,b)*b;} ll powmod(ll a,ll b,ll MOD){ll ans=1;while(b){if(b%2)ans=ans*a%MOD;a=a*a%MOD;b/=2;}return ans;} double dpow(double a,ll b){double ans=1.0;while(b){if(b%2)ans=ans*a;a=a*a;b/=2;}return ans;} //head int main() { int t;cin>>t; while(t--) { int n;cin>>n; int ans=0;int x=0,y=0; for(int i=0;i<n;i++) { int a;cin>>a; ans^=a; if(a==1) x++; } if(x==n) { if(x%2) printf("Brother\n"); else printf("John\n"); continue; } if(ans) printf("John\n"); else printf("Brother\n"); } return 0; }
相关文章推荐
- R语言|关联规则挖掘|可视化
- 字符串匹配——Sunday算法
- hdu 5762 Teacher Bo(鸽巢原理)
- linux基础学习-第三天记录
- Java 之 线程的生命周期(三)
- hdu5761Rower Bo+数学积分
- 201. Bitwise AND of Numbers Range
- visual studio 2015安装.net core 问题
- HDU 5761 Rower Bo
- 使用 CXF 做 webservice 简单例子
- Codeforces 439D Devu and his Brother
- JS数组实现队列和堆栈
- linux基础1
- 【CodeForces】371C - Hamburgers(二分)
- 单例模式深入学习
- Android Studio 导入第三方jar包
- c#之用StreamWriter追加写文件
- 重复元素的删除问题
- Failed to instantiate * using constructor public * with arguments **
- 【HDU 1950】Bridging signals(LIS算法求最长上升子序列)