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;
    }
    

      

  • 相关阅读:
    UVA120Stacks of Flapjacks
    [.NET] 基于windows mobile 5.0 开发环境配置说明
    C#实现UDP打洞
    webBrowser对跳转后的页面的处理
    Windows Mobile程序环境配置以及Windows Mobile与PC进行UDP通信总结
    C#【Fox即时通讯核心】 开发记录之三(知识储备:TCP UDP打洞)
    jqplot统计图工具简单例子
    订单编号
    windows mobile 5.0 PocketPC模拟器上网的设置 【正确】
    今明2年主要目标20112012
  • 原文地址:https://www.cnblogs.com/Hyouka/p/7445986.html
Copyright © 2011-2022 走看看