题目描述
有一种有趣的游戏,玩法如下:
玩家:2人;
道具:N颗石子;
规则:
- 游戏双方轮流取石子;
- 每人每次取走若干颗石子(最少取1颗,最多取K颗);
- 石子取光,则游戏结束;
- 最后取石子的一方为胜。
假如参与游戏的玩家都非常聪明,问最后谁会获胜?
输入格式
输入仅一行,两个整数N和K。
输出格式
输出仅一行,一个整数,若先手获胜输出1,后手获胜输出2。
输入数据 0
23 3
输出数据 0
1
数据范围与提示
对于全部数据,1≤N≤105,1≤K≤N。
一道经典的博弈论,我们只需要判断一下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
标签:输出,游戏,P10241,石子,6.7,获胜 From: https://www.cnblogs.com/cztq/p/16833478.html