取石子(六)
時間限制: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;
}