HDU4764 Stone
思路
可以将题目转化为 \(n-1\) 颗石子每次可取 \(1\sim k\) 颗的巴什博奕问题,也可以手算找规律。
当 \(n=1\) 时,后手胜。
当 \(n=2\sim k+1\) 时,先手胜。
当 \(n=k+2\) 时,后手胜。
当 \(n=k+3\sim2k+2\) 时,先手胜。
……
然后就发现满足 \((n-1)\mod (k+1) = 0\) 时后手胜,否则先手胜。
代码
/*
Author: Loceaner
知识点: 巴什博奕
*/
#include <cmath>
#include <cstdio>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
inline int read() {
char c = getchar(); int x = 0, f = 1;
for ( ; !isdigit(c); c = getchar()) if (c == '-') f = -1;
for ( ; isdigit(c); c = getchar()) x = x * 10 + (c ^ 48);
return x * f;
}
int n, k;
int main() {
while (scanf("%d%d", &n, &k) && n && k) {
if ((n - 1) % (k + 1) == 0) puts("Jiang");
else puts("Tang");
}
return 0;
}
转载不必联系作者,但请声明出处