1.9 KiB
1.9 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5900f5371000cf542c51004a | 問題 459: 裏返しゲーム | 5 | 302133 | problem-459-flipping-game |
--description--
裏返しゲームは、N
× N
個のマスがある盤を使って 2 人で行うゲームです。
各マスには、白と黒の面を持つ円盤が置いてあります。
ゲーム開始時は、すべての円盤の白い面が上になっています。
各ターンで、以下の性質を持つ長方形の範囲内にあるすべての円盤を裏返します。
- 長方形の右上隅に白い円盤がある
- 長方形の幅が完全正方数 (1, 4, 9, 16, ...) である
- 長方形の高さが三角数 (1, 3, 6, 10, ...) である

プレイヤーは交互に手を打ちます。 すべてのマスを黒にしたプレイヤーの勝ちです。
すべての円盤が白である N
x N
個のマスから始めて完璧なプレイをすると仮定して、先手必勝の手の数を W(N)
とします。
W(1) = 1
, W(2) = 0
, W(5) = 8
, W({10}^2) = 31\\,395
となります。
N = 5
のとき、先手必勝の第 1 手は次の 8 つです。

W({10}^6)
を求めなさい。
--hints--
flippingGame()
は 3996390106631
を返す必要があります。
assert.strictEqual(flippingGame(), 3996390106631);
--seed--
--seed-contents--
function flippingGame() {
return true;
}
flippingGame();
--solutions--
// solution required