P10241. 「一本通 6.7 例 1」取石子游戏 1

题目描述

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

玩家:2

道具:N颗石子

规则:

  1. 游戏双方轮流取石子;

  2. 每人每次取走若干颗石子(最少取1颗,最多取K颗);

  3. 石子取光,则游戏结束;

  4. 最后取石子的一方为胜。

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

输入格式

输入仅一行,两个整数NK

输出格式

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

输入数据 0

23 3

输出数据 0

1

数据范围与提示

对于全部数据,1<=N<=105

一道经典的博弈论,我们只需要判断一下n是否是k+1的倍数便解完了

证明:先手无论是从1到k中选哪个数,后手都可以使这一轮总共取出k+1个石子,并且保证第k+1个石子是自己取走的,所以若n是k+1倍数的时候,第n个石子一定能被后手取走。

#include<bits/stdc++.h>
using namespace std;
int n,k;
int main(){
    scanf("%d%d",&n,&k);
    if(n%(k+1)==0) puts("2");
    else puts("1");
    return 0;
}

综上所述,我是蒟蒻

2022-10-27 19:36:01

posted @ 2022-10-27 19:36  cztq  阅读(138)  评论(0)    收藏  举报