Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u

Submit Status

Description

一年在外 父母时刻牵挂 
春节回家 你能做几天好孩子吗 
寒假里尝试做做下面的事情吧

陪妈妈逛一次菜场 
悄悄给爸爸买个小礼物 
主动地 强烈地 要求洗一次碗 
某一天早起 给爸妈用心地做回早餐

如果愿意 你还可以和爸妈说 
咱们玩个小游戏吧 ACM课上学的呢~

下面是一个二人小游戏:桌子上有M堆扑克牌;每堆牌的数量分别为Ni(i=1…M);两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌;桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。 
现在我们不想研究到底先手为胜还是为负,我只想问大家: 
——“先手的人如果想赢,第一步有几种选择呢?” 

 

Input

输入数据包含多个测试用例,每个测试用例占2行,首先一行包含一个整数M(1<M<=100),表示扑克牌的堆数,紧接着一行包含M个整数Ni(1<=Ni<=1000000,i=1…M),分别表示M堆扑克的数量。M为0则表示输入数据的结束。 
 

Output

如果先手的人能赢,请输出他第一步可行的方案数,否则请输出0,每个实例的输出占一行。 
 

Sample Input

3
5 7 9
0
 

Sample Output

1
题意如题。
题解:考察的是对尼姆博弈本质的理解。如果先手能赢则异或值不为0,先手的第一步肯定是通过
   修改一个数的值把这些数的异或值变为0。假设有n个数,设其中一个数为a是要减少的数,
   那么a的值必须大于除了a以外的n-1个数的异或值才可以,只有大于才能通过a的减少使得
   所有数的异或值为0,如果等于那说明所有数的异或值为0,先手必败。如果小于那么无论怎么
   减少a都无法使得总异或值为0,二进制的表示中一定会有至少一个1存在着。
   所以遍历每个数,看哪些数是刚才所述的符合条件的a,统计这样的数有多少个即为最终结果。
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin>>n&&n)
{
int a[],ans=,cnt=;
for(int i=;i<n;i++)
{
cin>>a[i];
ans^=a[i];
}
for(int i=;i<n;i++)
{
if(a[i]>(ans^a[i]))//注意加括号
cnt++;
}
//以下这段话看不懂也没关系。 在本代码中 1.可以将cout 0那句去掉 2.可以在大于判断的时候加上等号
//但是两者不能同时用 因为有一个数的等于成立那么所有的数的等于都成立 即cnt=n 也就是异或为0先手必败的情况
//如果两者同时用会把先手必败的输出0的情况变为输出n 这样是错误的 但是单独用没问题
if(ans)
cout<<cnt<<endl;
else
cout<<<<endl;
}
return ;
}

HDU1850 Being a Good Boy in Spring Festival(博弈)的更多相关文章

  1. HDU1850 Being a Good Boy in Spring Festival

    /* HDU1850 Being a Good Boy in Spring Festival http://acm.hdu.edu.cn/showproblem.php?pid=1850 博弈论 尼姆 ...

  2. Being a Good Boy in Spring Festival(博弈)

    Being a Good Boy in Spring Festival Problem Description一年在外 父母时刻牵挂春节回家 你能做几天好孩子吗寒假里尝试做做下面的事情吧 陪妈妈逛一次 ...

  3. HDU1850 - Being a Good Boy in Spring Festival 【尼姆博弈】

    一年在外 父母时刻牵挂  春节回家 你能做几天好孩子吗  寒假里尝试做做下面的事情吧  陪妈妈逛一次菜场  悄悄给爸爸买个小礼物  主动地 强烈地 要求洗一次碗  某一天早起 给爸妈用心地做回早餐  ...

  4. hdu 1850 Being a Good Boy in Spring Festival(Nimm Game)

    题意:Nimm Game 思路:Nimm Game #include<iostream> #include<stdio.h> using namespace std; int ...

  5. Being a Good Boy in Spring Festival(尼姆博弈)

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...

  6. Being a Good Boy in Spring Festival(杭电1850)(尼姆博弈)

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

  7. HDU 1850 Being a Good Boy in Spring Festival (Nim博弈)

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

  8. HDU.1850 being a good boy in spring festival (博弈论 尼姆博弈)

    HDU.1850 Being a Good Boy in Spring Festival (博弈论 尼姆博弈) 题意分析 简单的nim 博弈 博弈论快速入门 代码总览 #include <bit ...

  9. HDUOJ-------Being a Good Boy in Spring Festival

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

随机推荐

  1. opencv笔记2:图像ROI

    time:2015年 10月 03日 星期六 12:03:45 CST # opencv笔记2:图像ROI ROI ROI意思是Region Of Interests,感兴趣区域,是一个图中的一个子区 ...

  2. codeforces 720A:Closing ceremony

    Description The closing ceremony of Squanch Code Cup is held in the big hall with n × m seats, arran ...

  3. HDU 4901 The Romantic Hero

    The Romantic Hero Time Limit: 3000MS   Memory Limit: 131072KB   64bit IO Format: %I64d & %I64u D ...

  4. groovy-真值

    Boolean expressions Groovy支持标准的条件运算符的布尔表达式: 1 def a = true 2 def b = true 3 def c = false 4 assert a ...

  5. MySQL使用痕迹清理~/.mysql_history

    mysql会给出我们最近执行的SQL命令和脚本:同linux command保存在~/.bash_history一样,你用mysql连接MySQL server的所有操作也会被记录到~/.mysql_ ...

  6. mysqli 操作数据库(转)

    从php5.0开始增加mysql(i)支持 , 新加的功能都以对象的形式添加 i表示改进的意思 功能多.效率高.稳定 编译时参数: ./configure --with-mysql=/usr/bin/ ...

  7. http https 区别

    HTTPS和HTTP的区别 一.https协议需要到ca申请证书,一般免费证书很少,需要交费.  二.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议.  三. ...

  8. Ubuntu nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)

    在Ubuntu 12中启动刚安装好的Nginx,报错: nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied) 原因如下: ...

  9. 教你安装漂亮的Arc GTK主题

    导读 近日,我们又发现了一款深受 Linux 用户喜爱的桌面主题 — Arc GTK,Arc GTK 主题已被很多 GNU/Linux 操作系统支持和采用,其中就包括即将到来的 Linux Mint ...

  10. xcode SVN

    Mac上SVN的管理工具: CornerStone http://blog.csdn.net/wohaoxuexi/article/details/8444184 步骤: 1. import 项目到s ...