#include <bits/stdc++.h>
using namespace std;
typedef long long ll;int main() {int T;cin >> T;while (T--) {ll n, m;cin >> n >> m;if (n % (m + 1) == 0) {cout << "YES" << endl; // 员工能赢} else {cout << "NO" << endl; // 小明必赢}}return 0;
}
巴什博弈是一种简单的组合博弈,规则如下:
- 有一堆 n 个物品。
- 两个玩家轮流取物品,每次可取 1 到 m 个。
- 取走最后一个物品的玩家获胜。
- 假设双方都采用最优策略。
问题
- 给定 n (物品总数)和 m (每次最多取的数量),判断先手是否必胜。
数学规律:
- 巴什博弈的胜负只依赖 n%(m+1)
这里小明会想办法把剩余的钱保持在 m+1 的倍数上
无论员工怎么取,小明总是能调整取走的金额,让剩余的钱重新回到 m+1的倍数
最终,小明能确保自己是取走最后一元钱的人。
所以,如果一开始钱就是 m+1 倍数。那小明必输