Official

D - みかんの取り合い/Take 1 or 2 Editorial by sounansya


まず、みかんが残り \(x\) 個である時に先手必勝か後手必勝かは以下のように判定することができます。

  • \(x \bmod 3 = 0\) なら後手必勝、それ以外では先手必勝。

これは数学的帰納法で証明することができます。

したがって、 \(N\) が与えられた後に \(N\bmod 3 = 0\) なら Second を、 \(N\bmod 3 \not = 0\) なら First を出力してゲームを開始すれば良いです。

上の議論により相手には残りのみかんの個数が \(3\) の倍数となるような盤面を渡せば良いです。

実装例(Python3)

n = int(input())
if n % 3 != 0:
    print("First")
    print(n % 3)
    n -= n % 3
else:
    print("Second")
while True:
    x = int(input())
    if x == 0:
        break
    n -= x
    print(n % 3)
    n -= n % 3

posted:
last update: