现在的位置: 首页 > 综合 > 正文

杭电hdu 1849 Rabbit and Grass nim game

2014年01月08日 ⁄ 综合 ⁄ 共 455字 ⁄ 字号 评论关闭

http://acm.hdu.edu.cn/showproblem.php?pid=1849

用到异或操作。具体讲解见百度百科http://baike.baidu.com/view/1101962.html

结论:(Bouton's Theorem)对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示异或(xor)运算。怎么样,是不是很神奇?我看到它的时候也觉得很神奇,完全没有道理的和异或运算扯上了关系。但这个定理的证明却也不复杂,基本上就是按照两种position的证明来的。

//nim game
#include <stdio.h>

int main()
{
	int n, a;
	while(scanf("%d", &n)&&n){
		int res = 0;
		while(n--){
			scanf("%d", &a);
			res ^= a;
		}
		if(res == 0)printf("Grass Win!\n");
		else printf("Rabbit Win!\n");
	}
	return 0;
}

抱歉!评论已关闭.