Brave Game

HDOJ-1846-Brave Gameopen in new window

分析

巴什博弈。

必胜策略:永远留给对手m + 1的整数倍个石子。

n = k * (m + 1) + r时,我方(先手)取r个石子,如果对手取a个石子,那么我方取(m + 1) - a个石子,此时还有(k - 1) * (m + 1)个石子。当对手从m + 1个石子中取时,我方获胜。

实现

#include <iostream>
using namespace std;

int main () {
    int T;
    cin >> T;
    while (T --) {
        int n, m;
        cin >> n >> m;
        cout << (n % (m + 1) >= 1 ? "first" : "second") << endl;
    }
    return 0;
}
最后修改于: