取石子(六)_nyoj_585(博弈-奇异矩阵).java
取石子(六)
时间限制: 1000 ms | 内存限制: 65535 KB
难度: 3
- 描述
- 最近 TopCoder 的 PIAOYI 和 HRDV 很无聊,于是就想了一个游戏,游戏是这样的:有 n 堆石子 , 两个人轮流从其中某一堆中任意取走一定的石子 , 最后不能取的为输家,注意: 每次只能从一堆取任意个,可以取完这堆,但不能不取。假设 PIAOYI 先取石子,请你帮他判断他是否能赢(假设他们取的过程中不发生失误 , 他们足够聪明 )。
#include<stdio.h> int main(){ int N; scanf("%d",&N); while(N--){ int n; scanf("%d",&n); if(!n){ printf("HRDV\n"); continue; } int sum; scanf("%d",&sum); for(int i=1;i<n;i++){ int a; scanf("%d",&a); sum^=a; } if(!sum) printf("HRDV\n"); else printf("PIAOYI\n"); } return 0; }
import java.io.BufferedReader; import java.io.InputStreamReader; public class Main{//用Scanner超时,用这个不知道怎么错了,c可过 public static void main(String[] args) { BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); try { int N=Integer.parseInt(bf.readLine()); while(N-->0){ int n=Integer.parseInt(bf.readLine()); if(n==0){ System.out.println("HRDV"); continue; } String s[]=bf.readLine().split(" "); int sum=Integer.parseInt(s[0]); for(int i=1;i<n;i++){ sum^=Integer.parseInt(s[i]); } if(sum==0) System.out.println("HRDV"); else System.out.println("PIAOYI"); } } catch (Exception e) { e.printStackTrace(); } } }