NYOJ 135 & 585 (博弈问题)

#include <stdio.h>

#if 1
int main()								//游戏类型 : B    T135
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int N, temp = 0;
		scanf("%d",&N);
		while(N--)
		{
			int m, n;
			scanf("%d%d", &m, &n);
			temp ^= m % (n + 1);		//f(x) = x % (n + 1), x: 每堆石子数, n: 每堆最多取的数目;   f(x) 的二进制异或运算, 同为0, 不同为1
		}

		if(temp != 0)					//先行者胜
			printf("Win\n");
		else
			printf("Lose\n");
	}
	return 0;
}


#else
int main()								//游戏类型 : A		T585
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int m, temp = 0;
		scanf("%d",&m);
		while(m--)
		{
			int n;
			scanf("%d", &n);			//f(x) = x ,   x: 每堆石子数
			temp ^= n;					//f(x) 的二进制异或运算, 同为0, 不同为1
		}

		if(temp != 0)					//先行者胜
			printf("PIAOYI\n");
		else
			printf("HRDV\n");
	}
	return 0;
}

#endif

posted @ 2013-07-30 11:38  zhlechn  阅读(209)  评论(0)    收藏  举报