• John


    John

    Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)
    Total Submission(s): 60 Accepted Submission(s): 41
     
    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
     
    Recommend
    lcy
     
    /*
    题意:有一个盒子,里面装着不同颜色的糖,没人每次只能吃相同颜色的糖。并且最少吃一个,谁吃到最后一个糖就会输
        就输。
    初步思路:就是裸的尼姆博弈,石头堆换成相同颜色的糖
    
    #错误:少了特判,如果都是1的话,就不需要看异或了。
    */
    #include<bits/stdc++.h>
    using namespace std;
    int t,n,a[50];
    int main(){
        // freopen("in.txt","r",stdin);
        scanf("%d",&t);
        int res=0;
        while(t--){
            scanf("%d",&n);
            res=0;
            int flag=0;
            for(int i=0;i<n;i++){
                scanf("%d",&a[i]);
                res^=a[i];
                if(a[i]>1) flag=1;
            }
            if(flag){
                printf(res?"John
    ":"Brother
    ");
            }else{
                printf(n&1?"Brother
    ":"John
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    PAT (Advanced Level) Practice 1071 Speech Patterns (25分)
    PAT (Advanced Level) Practice 1070 Mooncake (25分)
    PAT (Advanced Level) Practice 1069 The Black Hole of Numbers (20分)
    PAT (Advanced Level) Practice 1074 Reversing Linked List (25分)
    PAT (Advanced Level) Practice 1073 Scientific Notation (20分)
    第一次冲刺个人总结01
    构建之法阅读笔记01
    人月神话阅读笔记01
    四则运算2
    学习进度条(软件工程概论1-8周)
  • 原文地址:https://www.cnblogs.com/wuwangchuxin0924/p/6376454.html
Copyright © 2020-2023  润新知