AcWing 1318. 取石子游戏
宋标 Lv5

题目

有一种有趣的游戏,玩法如下:

玩家: 人;

道具: 颗石子;

规则:

  1. 游戏双方轮流取石子;
  2. 每人每次取走若干颗石子(最少取 颗,最多取 颗);
  3. 石子取光,则游戏结束;
  4. 最后取石子的一方为胜。

假如参与游戏的玩家都非常聪明,问最后谁会获胜?

输入格式

输入仅一行,两个整数

输出格式

输出仅一行,一个整数,若先手获胜输出 ,后手获胜输出

数据范围

,

输入样例:

23 3

输出样例:

1

题解

第一次接触到博弈论
这题很适合入门。
博弈论有且只有两个状态:必胜态、必败态
1.如果可以走到必败态,那么必胜
2.如果可以走到必胜态,那么必败

0颗 先手必败
1 先手必胜
2 先手必胜
3 先手必胜
4 先手必败
5 先手必胜
6 先手必胜
7 先手必胜
8 先手必败

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>

using namespace std;

int n, k;

int main()
{
cin >> n >> k;
cout << (n % (k + 1) ? 1 : 2) << endl;
return 0;
}
 评论