取石子系列----四 取石子(六)(尼姆博弈)

取石子(六)
時間限制:1000 ms | 內存限制:65535 KB
難度:3
描述
最近TopCoder的PIAOYI和HRDV很無聊,於是就想了一個遊戲,遊戲是這樣的:有n堆石子,兩個人輪流從其中某一堆中任意取走一定的石子,最後不能取的爲輸家,注意: 每次只能從一堆取任意個,可以取完這堆,但不能不取。假設PIAOYI先取石子,請你幫他判斷他是否能贏(假設他們取的過程中不發生失誤,他們足夠聰明)。
輸入
第一行輸入n,代表有n組測試數據(n<=10000)
以下每組測試數據包含兩行:第一行:包含一個整數m,代表本組測試數據有m(m<=1000)堆石子;
:第二行:包含m個整數Ai(Ai<=100),分別代表第i堆石子的數量。
輸出
若PIAOYI贏輸出“PIAOYI”,否則輸出“HRDV”注意每組結果佔一行。。
樣例輸入
3
2
1 1
3
3 8 11
2
5 10
樣例輸出
HRDV
HRDV
PIAOYI
來源
原創
上傳者
TC_張友誼

單純的尼姆博弈,沒有很特別的地方。。。。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <set>
#include <cstring>
#include <cstdlib>
#include <vector>
#include <map>
using namespace std;
int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
    {
        int n;
        scanf("%d", &n);
        int ans = 0;
        for(int i=0;i<n;i++)
        {
            int x;
            scanf("%d", &x);
            ans = ans ^ x;
        }
        if(ans)
            printf("PIAOYI\n");
        else
            printf("HRDV\n");
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章