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

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

如果愿意 你还可以和爸妈说
咱们玩个小游戏吧 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

这是一道NIM博弈题目,确实很难想,想了很久还是觉得应该从NIM博弈的推导过程出发

对于某个必胜局面有a1 ^ a2 ^ a3 ^ …^ an=k(k!=0);
则必定存在i(1<=i<=n)使得ai^k<=ai;
现在记ai’=ai^k, 则有:
a1^ a2^ …^ ai’^ …^an
=a1^ a2^ …^ ai^ k^ …^an
=k^k=0;
那么当将ai变为ai’, 即在第i堆取走ai-ai^k个石子后,局面就变成了必败局面;
所以任一必胜态都可以一步到达必败态;

首先在输入过程中就先将每个值进行异或,如果异或值为0则直接可以知道先手是必败的,在不为0时,可知此时为必胜态,由上述推导过程可知只要满足ai^k<=ai就可以使对方处在必败态,那么需要的就只是遍历一遍数组了

AC代码

#include<stdio.h>
int main()
{int M;int num[105];while(scanf("%d",&M)&&M){int sum=0,ans=0,res=0;for(int i=0;i<M;i++){scanf("%d",&num[i]);sum=sum^num[i];}if(sum==0)printf("0\n");else{for(int i=0;i<M;i++){res=sum^num[i];if(res<num[i])ans++;}printf("%d\n",ans);}}return 0;
}

Being a good boy in the spring festival NIM博弈相关推荐

  1. 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 ...

  2. HDU1850 Being a Good Boy in Spring Festival

    1 /* 2 HDU1850 Being a Good Boy in Spring Festival 3 http://acm.hdu.edu.cn/showproblem.php?pid=1850 ...

  3. HDU1850 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/32768 ...

  4. Spring Festival

    我的个人博客 In China, Spring Festival is one of the most important festivals. It is also getting more and ...

  5. 春节词汇 Spring Festival Words

    节日名 Greeting season 春节 The Spring Festival 农历 lunar calendar 正月 lunar January; the first month by lu ...

  6. hdu 1850 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 ...

  7. Spring festival return travel rush begins(春节返程高峰开始)

    As the Spring Festival holiday nears its end, transportation authorities are gearing up for the trav ...

  8. 家乡的春节html,家乡的春节(Spring Festival in my hometown)英语作文

    家乡的春节(Spring Festival in my hometown)英语作文该文细节:JOOZONE + 标题:家乡的春节(Spring Festival in my hometown)英语作文 ...

  9. Check task status after 2016 Spring festival

    Created by Wang, Jerry on Feb 21, 2016

最新文章

  1. AI研究过于集中狭隘,我们是不是该反思了?
  2. 找出1个小时前更新的文件并进行拷贝
  3. Gtk-WARNING**:无法在模块路径中找到主题引擎:“pixmap”的解决
  4. 在ubuntu上安装,使用MQTT Mosquitto
  5. 经典算法笔记:无监督算法(聚类、降维)
  6. wxWidgets:wxPropertyGrid概述
  7. Scala入门到精通——第十一节 Trait进阶
  8. customizing download debug - extraction in ERP
  9. 临界表储存图的数据(思路+详解+图示)
  10. 获取当前鼠标的位置以及组件的位置
  11. python查看运行内存占用_python中使用psutil查看内存占用的情况
  12. Baum-WELCH和vertibe解码算法
  13. 怎么理解高内聚低耦合
  14. c语言作业的分析,C语言作业分析.doc
  15. java文件读取的几个操作-1
  16. 史上最管用的C盘深度清理秘籍
  17. GlobeImposter
  18. android wear5.0,Android Wear安卓5.0正式到来
  19. 电脑编程工作工资多少?
  20. 配置vps服务器,拨号换ip(一)

热门文章

  1. Android填坑系列:Android JSONObject 中对key-value为null的特殊处理
  2. jsp内置对象*response
  3. asp.net mvc项目中遇到的古怪的问题,(项目中有frame框架)
  4. 装饰模式-包装request和response
  5. MySQL用户管理和权限设置
  6. win7远程连接开启方法
  7. Windows上编译OpenEXR
  8. [转]加密技术在企业数据安全中的应用
  9. 小程序入门学习16--上传小程序至github
  10. Github部署+Hexo搭建免费博客 next主题美化