zoukankan      html  css  js  c++  java
  • 洛谷 P4279 [SHOI2008]小约翰的游戏

    小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有(n)堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取,我们规定取到最后一粒石子的人算输。

    小约翰相当固执,他坚持认为先取的人有很大的优势,所以他总是先取石子,而他的哥哥就聪明多了,他从来没有在游戏中犯过错误。小约翰一怒之前请你来做他的参谋。自然,你应该先写一个程序,预测一下谁将获得游戏的胜利。

    简明题意就是Nim游戏取到最后一个石子的人输

    这个题是Anti-Nim

    我们先讨论最简单的胜负

    1:只有一堆石子且个数为(1),则后手胜

    2:每一堆石子都是(1),那么奇数个石子后手胜,偶数个石子先手胜

    3:只有一堆石子不是(1),其余每堆石子都是(1),那么先手一定可以选择取(n-1)(n)个来转移到2且为奇数的情况,所以先手胜

    4:正常情况,先手只要保证能通过选石子选到3就必胜,也就是自己选到最后一堆石子,那么就是Nim游戏了

    Code

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    int T,n,ans,sm;
    int main()
    {
        scanf("%d",&T);
        int x;
        while (T--)
        {
            ans = 0;
            sm = 0;
            scanf("%d",&n);
            for (int i = 1;i <= n;i++)
                scanf("%d",&x),ans ^= x,sm += x;
            if (sm == n)
            {
                if (sm % 2 == 1)
                    printf("Brother
    ");
                else
                    printf("John
    ");
            }
            else
            if (ans)
                printf("John
    ");
            else
                printf("Brother
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    JSON Web令牌(JWT)
    CSRF跨站点请求伪造(Cross—Site Request Forgery)
    logging模块
    Django中使用Celery
    第一坑 先引入jQuery ./引入
    CSS 入门
    超大型文件传输方案 + socket + subprocess popen 远程执行系统命令
    MYSQL的执行计划 事务处理 和 跑路
    mysql 存储过程
    Django中CBV View的as_view()源码解析
  • 原文地址:https://www.cnblogs.com/sdlang/p/13625326.html
Copyright © 2011-2022 走看看