zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    tabbar 旋转指定的页面
    GDAL中文路径不能打开&Shp文件字段属性值中文乱码
    Project : error PRJ0019: 工具从"Moc'ing xxx.h..."
    详解Android中的屏幕方向
    qt中获取文件路径和文件名
    vs2005下Qt项目中修改exe图标的方法
    Qt & C/C++统计运行时间
    Qt 中Treewidget添加右键菜单
    QT 中文乱码解决方案
    Qt多线程应用QRunnable显示进度条示例
  • 原文地址:https://www.cnblogs.com/wuwangchuxin0924/p/6376454.html
Copyright © 2011-2022 走看看