取石子(六)_nyoj_585(博弈-奇异矩阵).java

 

取石子(六)

时间限制: 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
来源
原创
上传者
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();

		} 

	}

}


 


 

你可能感兴趣的:(java)