关于#游戏#的问题,如何解决?博弈论

题目描述
小H组织了一个游戏让小A和小B玩,首先小H拿出 n个石子,双方轮流采取行动。
每当轮到一人行动时,该名玩家需要从石子堆中取走恰好 1个 或 2 或 k 个石子。
如果轮到一人行动时,已经没有石子可取,则该名玩家失败。
已知,双方都会采取最优策略,且 小A率先行动。
请问,最终谁将获胜。

输入
第一行包含整数 T,表示共有 T 组测试数据。
每组数据占一行,包含两个整数 n,k。

输出
每组数据输出一行结果,如果 小A 获胜,则输出 A,否则输出 B。

样例输入
4
0 3
3 3
3 4
4 4

样例输出
B
A
B
A

提示
数据范围:1≤T≤100,0≤n≤10^9,3≤k≤10^9。

有帮助的话采纳一下

#include <iostream>
using namespace std;

int main() {
    int T;
    cin >> T;
    while (T--) {
        int n, k;
        cin >> n >> k;
        
        if (n == 0) {
            cout << "B" << endl;
            continue;
        }
        
        if (k <= 2) {
            if (n % (k + 1) == 0) cout << "A" << endl;
            else cout << "B" << endl;
            continue;
        }
        
        if (n > k) cout << "A" << endl;
        else cout << "B" << endl;
    }
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^