题目:
描述:
五一长假第四天,Tom逛了N个bbs,做了N^2个脑筋急转弯题,终于发现了每次吃完花生米嘴里都是苦味的原因:自己总会吃到最后一粒花生米。
五一长假第五天,Tom和Jerry在仓库散步的时候发现了n堆花生米(这是什么仓库啊?!)。这次Tom制定分花生米规则如下:
???????1、首先选出最苦的一粒花生米,放到一个瓶子里;
???????2、Tom和Jerry轮流从任意一堆花生米中取出任意粒吃掉;
???????3、如果Tom吃到最后一粒花生米(瓶子里的花生米除外),Jerry必须吃掉瓶子里的花生米;如果Jerry吃到最后一粒花生米(瓶子里的花生米除外),Tom自愿吃掉瓶子里的花生米;
?????? 4、为显示规则的公平性,Jerry可以选择先取或者后取。
Jerry当然希望瓶子里的花生米被Tom吃掉。请计算,Jerry为了达到目的应该先取还是后取。
输入:
本题有多个测例。
每个测例的输入第一行是一个整数n,n大于零小于等于10,代表花生米的堆数(取出最苦花生米后);接下来n行每行一个不超过100的正整数,分别代表一堆花生米的粒数(取出最苦花生米后)。
n等于0表示输入结束,不需要处理。
输出:
每个测例在单独的一行内输出一个整数:Jerry先取输出1;Tom先取输出0。
输入样例:
2
1
1
2
1
100
0
输出样例:
0
1
扫描二维码关注公众号,回复:
5080713 查看本文章
来源:
思路:
Nim博弈问题:
#include <iostream>
#include <stdio.h>
using namespace std;
int main ()
{
int n,s;
while(cin >> n,n)
{
s = 0;
for(int i=1; i<=n ;i++)
{
int x;
scanf("%d",&x);
s ^= x;
}
if(s)
cout << "1"<< endl;
else
cout << "0"<< endl;
}
return 0;
}