题目链接:https://www.luogu.org/problem/P3150

这道题目是博弈论的入门题。

我们以 必胜态必败态 来讲解这个问题。

首先,下面的图片演示了前8个数的必胜态和必败态:



可以发现:

  • 当 \(m=1,3,5,7\) 的时候都是必败态;
  • 当 \(m=2,4,6,8\) 的时候都是必胜态。

我们不妨用数学归纳法来证明一下:

对于任意一个大于8的 \(m\) ,假设我已知它前面的 \(m-1\) 个数的状态已经确定,并且奇数都是必败态,偶数都是必胜态。则:

  • 如果 \(m\) 是奇数,则它无论如何分,都是分成一个小于 \(m\) 的奇数和一个小于 \(m\) 的偶数,也就是无论如何分都会留给对手一个必胜态(偶数),则 \(m\) 对我就是必败态;
  • 如果 \(m\) 是偶数,则它可以分成两个奇数(此时留给对手两个必败态),也可以分成两个偶数(此时留给对手两个必胜态),然而因为我绝对聪明,所以我肯定会分成两个奇数,所以此时 \(m\) 对我就是必胜态。

综上所述,可以得到结论:所有的偶数都是必胜态,所有的奇数都是必败态。

实现代码如下:

#include <bits/stdc++.h>
using namespace std;
int n, m;
int main() {
cin >> n;
while (n --) {
cin >> m;
puts( m % 2 ? "zs wins" : "pb wins");
}
return 0;
}

最新文章

  1. 由Memcached升级到 Couchbase的 Java 客户端的过程记录(一)
  2. Ubuntu 14.04 (Trusty Tahr) LTS发布,附下载地址,各种镜像【bubuko.com】
  3. CentOS6.4 内核优化
  4. hdu----(1466)计算直线的交点数(dp)
  5. Linux双网卡绑定和解除绑定的实现
  6. jgs--多线程和synchronized
  7. 热门开源项目:Guns-后台管理系统
  8. 关于asp.net web form 和 asp.net mvc 的区别
  9. 安装linux下面用来配置网络,防火墙,系统服务等设置的图形小工具Setup
  10. Struts 2 之类型转换器
  11. 【ShaderToy】画一个球体
  12. 实现promise
  13. ef 增加或者更新的习惯思维
  14. Python connect mariadb(Python连接mysql)
  15. YQCB冲刺第二周绩效评价
  16. 二、hbase shell工具
  17. WPF的菜单栏,工具栏的简单使用
  18. [Leetcode]015. 3Sum
  19. 剑指Offer(书):链表中环的入口节点
  20. Linux下Qt5.6 Fcitx无法输入中文输入解决办法

热门文章

  1. SpringMVC返回json的问题
  2. HR招聘_(七)_招聘方法论(面试环节&#183;动机判断)
  3. Total Number of Unicorn Companies: 188
  4. C++ std::vector指定位置插入
  5. ORACLE 使用笔记
  6. 【C/C++多线程编程之七】pthread信号量
  7. iOS - CAReplicatorLayer 的运用
  8. 怎么用PHP+sqlite3验证登录用户名和密码
  9. Intellij:用Intellij出的Gradle插件进行开发
  10. Hdu 1007 最近点对