题意

威佐夫博弈_百度百科传送门
每次芳乃先抽,在双方都做出最佳决策的情况下判断谁必胜

思路

拿到最后一张牌的人就输了,所以为了获胜,我们必须拿走倒数第二张牌。
拿走倒数第二张牌以后,整个牌堆剩余(n-1)张牌。

每次每人只能抽取1~k张牌,所以先手抽完以后后手可以保证该回合抽的牌数为1+k(先手拿1张则后手拿k张,确保1+k)。既然后手可以保证拿1+k张牌,那我们只需判断(n-1)是否能被k+1整除即可,如果能被k+1整除,说明后手拿走了倒数第二张牌,后手必胜

代码

#include <iostream>

using namespace std;

int main() {
    int T;  //T组数据
    int n;  //n张牌
    int k;  //一次最多抽k张
    cin >> T;
    while (T-- > 0) {
        cin >> n >> k;
        if ((n - 1) % (k + 1) == 0) {
            cout << "ma la se mi no.1!" << endl;
        } else {
            cout << "yo xi no forever!" << endl;
        }
    }
}