洛谷P3150 pb的游戏(1)题解 博弈论入门

题目链接: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;
}
原文地址:https://www.cnblogs.com/codedecision/p/11788241.html