zoukankan      html  css  js  c++  java
  • HDU 1907————anti-nim游戏

    题目:

    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
    分析:
        anti-nim游戏:谁最后走最后一步谁输,先手赢的必胜策略是
     1)所有堆石子数都为1而SG值为0;
    2)存在某堆石子数不为1且SG值不为0.
    #include<cstdio>
    int main()
    {
        int t,n,a[50],ans;
        int flag;
        scanf("%d",&t);
        while(t--)
        {
            flag=1;
            ans=0;
            scanf("%d",&n);
            for(int i=0;i<n;i++)
            {
                scanf("%d",&a[i]);
                if(a[i]!=1) flag=0;
                ans^=a[i];
            }
            if(flag)
            {
                if(n&1)
                    printf("Brother
    ");
                else
                    printf("John
    ");
            }
            else
            {
                if(ans)
                {
                    printf("John
    ");
                }
                else
                    printf("Brother
    ");
            }
        }
        return 0;
    }
    View Code
     
  • 相关阅读:
    mina 字节数组编解码器的写法 I
    latex编写论文
    HTML学习
    Apache Mina Filter
    静态循环队列的相关操作及详解
    hdu1242 Rescue(BFS +优先队列 or BFS )
    让我们区分质量保证与测试
    新玩的windows phone app studio
    Pylons安装苦逼之路
    [置顶] js 实现 <input type="file" /> 文件上传
  • 原文地址:https://www.cnblogs.com/forwin/p/4890463.html
Copyright © 2011-2022 走看看