一本通1663【 例 1】取石子游戏 1
1663:【 例 1】取石子游戏 1
时间限制: 1000 ms 内存限制: 524288 KB【题目描述】
有一种有趣的游戏,玩法如下:
玩家: 2 人;
道具: N 颗石子;
规则:
1、游戏双方轮流取石子;
2、每人每次取走若干颗石子(最少取 1 颗,最多取 K 颗);
3、石子取光,则游戏结束;
4、最后取石子的一方为胜。
假如参与游戏的玩家都非常聪明,问最后谁会获胜?
【输入】
输入仅一行,两个整数 N 和 K 。
【输出】
输出仅一行,一个整数,若先手获胜输出 1,后手获胜输出 2。
【输入样例】
23 3
【输出样例】
1
【提示】
数据范围与提示:
对于全部数据, 1≤N≤105,1≤K≤N。
sol:肯定尽量凑k+1,如果有余数就是先手胜,否则就是后手
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <bits/stdc++.h> using namespace std; typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) { f|=(ch=='-'); ch=getchar(); } while(isdigit(ch)) { s=(s<<3)+(s<<1)+(ch^48); ch=getchar(); } return (f)?(-s):(s); } #define R(x) x=read() inline void write(ll x) { if(x<0) { putchar('-'); x=-x; } if(x<10) { putchar(x+'0'); return; } write(x/10); putchar((x%10)+'0'); return; } #define W(x) write(x),putchar(' ') #define Wl(x) write(x),putchar('\n') int n,k; int main() { R(n); R(k); if(n%(k+1)) puts("1"); else puts("2"); return 0; }
河田は河田、赤木は赤木……。
私は誰ですか。教えてください、私は誰ですか。
そうだ、俺はあきらめない男、三井寿だ!