zoukankan      html  css  js  c++  java
  • Codeforces Gym

    I. Rock Piles
    time limit per test
    1.0 s
    memory limit per test
    256 MB
    input
    standard input
    output
    standard output

    Hasan and Abdullah are lost in the desert, they are waiting for the rescue squad to help them. While they are waiting, they decided to invent a new game called Rock Piles.

    In this game, there are two rock piles. The first pile contains N rocks, and the second one contains M rocks. Hasan and Abdullah take turns to play the game, Hasan starts first. In each turn, a player can choose to take one rock from a single pile, or take one rock from both piles. The player who cannot make any move, loses the game. Determine who will win if both of them play optimally.

    Input

    The first line of the input contains an integer T (1  ≤  T  ≤  104), where T is the number of the test cases.

    Each test case has one line that contains two integers N and M (0  ≤  NM  ≤  109), the number of rocks in the first and second pile respectively.

    Output

    For each test case, print a single line with the winner's name. If Hasan wins print "hasan", otherwise print "abdullah" (without quotes).

    Example
    input
    2
    2 3
    4 0
    output
    hasan
    abdullah

     威佐夫博弈的变形  变形了那跟原来的关系应该就不大了 在纸上写了几个状态没发现规律 只好SG函数打表

    打出表后规律一下就清楚了

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    #include <vector>
    #include <iomanip>
    #include <math.h>
    #include <map>
    using namespace std;
    #define FIN     freopen("input.txt","r",stdin);
    #define FOUT    freopen("output.txt","w",stdout);
    #define INF     0x3f3f3f3f
    #define INFLL   0x3f3f3f3f3f3f3f
    #define lson    l,m,rt<<1
    #define rson    m+1,r,rt<<1|1
    typedef long long LL;
    typedef pair<int, int> PII;
    using namespace std;
    
    const int maxn = 10000 + 5;
    /*
    void GetSG(int n = 100, int m = 100) {
        int i, j;
        memset(SG, 0, sizeof(SG));
        for(i = 0; i <= n; i++) {
            for(int j = 0; j <= m; j++) {
                memset(Hash, 0, sizeof(Hash));
                if(i >= 1) Hash[SG[i - 1][j]] = 1;
                if(j >= 1) Hash[SG[i][j - 1]] = 1;
                if(i >= 1 && j >= 1) Hash[SG[i - 1][j - 1]] = 1;
                for(int k = 0; k <= n; k++) {
                    if(Hash[k] == 0) {
                         SG[i][j] = k;
                         break;
                    }
                }
            }
        }
    }
    */
    int main() {
        //FIN
        int n, m;
        int T;
        scanf("%d", &T);
        while(T--) {
            scanf("%d%d", &n, &m);
            if(n % 2 == 0 && m % 2 == 0) puts("abdullah");
            else puts("hasan");
        }
    
        return 0;
    }
    

      

  • 相关阅读:
    用友U8 | 【存货管理】提示用户***正在记账,不允许并发。
    用友U8 | 怎么准确查找【采购入库单】、【采购发票】,对应的凭证号?
    用友U8 | 中途启用序列号管理,该怎么操作?
    Excel:提取身份证号中的性别
    给jupyter 添加代码自动补全功能
    SQL函数之:截断字符串
    解决Maven子项目提示 ‘parent.relativePath‘ of POM
    公共NTP资源汇总
    iperf3的使用
    ZeroTier的使用
  • 原文地址:https://www.cnblogs.com/Hyouka/p/7445986.html
Copyright © 2011-2022 走看看