zoukankan      html  css  js  c++  java
  • John

    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.


    InputThe 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

    OutputOutput 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

    代码:
    ///1.如果所有堆都为1(即c为0) 且为偶数堆(即flag为0)后手拿最后一个  比如 1 1 1 1
    ///2.如果c不为零,存在d大于1 ,如果这样的d只有一个  (flag肯定不为0) 比如 1 1 4 先手拿3个造成对方必败 1 1 1 4 先手拿4个 对方必败
    ///3.如果这样的d不只一个 先手拿一次将flag变为0即可 且总还存在某堆石子数大于1(如果不存在就必败了)。转换成二进制来看就是拿走flag个 剩下的每个位的1都是偶数个 是必败态
    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #define Max 1001
    #define PI 3.1415927
    using namespace std;
    
    int main()
    {
        int t,n,d;
        cin>>t;
        while(t --)
        {
            int flag = 0,c = 0;
            cin>>n;
            while(n --)
            {
                cin>>d;
                flag ^= d;
                if(d > 1)c ++;
            }
            if(!flag&&!c || flag&&c)cout<<"John"<<endl;
            else cout<<"Brother"<<endl;
        }
    }
  • 相关阅读:
    Django模板语言进阶
    ORM基础之ORM介绍和基础操作
    ORM关于表那些事
    ORM之基础操作进阶
    ORM基础之字段及其参数介绍
    AJAX初识(原生JS版AJAX和Jquery版AJAX)
    AJAX异步、sweetalert、Cookie和Session初识
    在一个千万级的数据库查寻中,如何提高查询效率?
    A fatal error has been detected by the Java Runtime Environment(jdk 1.6的一个BUG)
    外网映射工具地址
  • 原文地址:https://www.cnblogs.com/8023spz/p/7966762.html
Copyright © 2011-2022 走看看