yukicoder 0008 N言っちゃダメゲーム

問題文

概要

$2$人対戦ゲームをする. $N, K$ が与えられる. プレイヤーには交互にターンが回ってきて, 自分のターンになった時に, $K$ 以下の正整数 $t$ を選び, $N$ を $N - t$ で更新する. $0$ になってしまったら負け.

$N$ と $K$ が沢山与えられるので, それぞれについて先手後手のどちらが勝つか判定せよ.

制約

$1 \le P \le 100$, $2 \le N, K \le 12 * 10^4$.

解法

よくやる手で, $(N-1) \equiv 0 \pmod K+1$ かで判定できる.

ソースコード

1
2
3
4
5
6
7
8
9
10
bool solve(){
    int p;
    cin >> p;
    rep(_, p){
        int n, k;
        cin >> n >> k;
        cout << (--n % (k+1) ? "Win" : "Lose") << endl;
    }
    return true;
}
download full source code