hdu 1907 Nim游戏

2014-11-24 08:40:39 · 作者: · 浏览: 0

John

Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 2412 Accepted Submission(s): 1303


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

Source Southeastern Europe 2007

当每一堆都为1时,即都是孤单堆时,需要特殊考虑。

否则对每一项抑或,假如等于0,则后手胜,否则先手胜。

代码:

/* ***********************************************
Author :xianxingwuguan
Created Time :2014-2-8 0:11:46
File Name :1.cpp
************************************************ */
#pragma comment(linker, "/STACK:102400000,102400000")
#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
          
            #include 
           
             #include 
            
              #include 
             
               #include 
              
                #include 
                using namespace std; #define INF 0x3f3f3f3f #define eps 1e-8 #define pi acos(-1.0) typedef long long ll; int a[10000]; int main(){ int T,i,j,k,m,n; cin>>T; while(T--){ cin>>n; int sum=0; for(i=1;i<=n;i++) cin>>a[i], sum+=a[i]==1; if(sum==n){ if(n%2==0)puts("John"); else puts("Brother"); } else { int flag=0; for(i=1;i<=n;i++) flag^=a[i]; if(flag)puts("John"); else puts("Brother"); } } }