61 lines
1.9 KiB
Markdown
61 lines
1.9 KiB
Markdown
---
|
|
id: 5900f4701000cf542c50ff83
|
|
title: '問題 260: 石取りゲーム'
|
|
challengeType: 5
|
|
forumTopicId: 301909
|
|
dashedName: problem-260-stone-game
|
|
---
|
|
|
|
# --description--
|
|
|
|
石を積み上げた 3 つの山と 2 人のプレイヤーでゲームをします。
|
|
|
|
各プレイヤーは自分のターンで、石の山から 1 つ以上の石を取ります。 ただし、複数の山から石を取る場合は、選んだ山のそれぞれから同じ数の石を取らなければなりません。
|
|
|
|
つまり、プレイヤーは次のいずれかのパターンで個数 $N > 0$ を選び、山から取ります。
|
|
|
|
- 1 つの山から $N$ 個の石を取る。
|
|
- 2 つの山から $N$ 個ずつ石を取る (計: $2N$ 個)。
|
|
- 3 つの山から $N$ 個ずつ石を取る (計: $3N$ 個)。
|
|
|
|
最後の石を取ったプレイヤーの勝ちです。
|
|
|
|
勝利構成とは、先手が必ず勝てる構成です。
|
|
|
|
例えば、(0,0,13), (0,11,11), (5,5,5) は、先手が即座にすべての石を取れるので、勝利構成です。
|
|
|
|
敗北構成とは、先手が何をしようと 後手が必ず勝てる構成です。
|
|
|
|
例えば、(0,1,2) と (1,3,3) は敗北構成です。ルールに従う限り、何をしても 後手の勝利構成になります。
|
|
|
|
$x_i ≤ y_i ≤ z_i ≤ 100$ として、すべての敗北構成 ($x_i$,$y_i$,$z_i$) について考えます。 それらの構成について $\sum (x_i + y_i + z_i) = 173\\,895$ であることを確認できます。
|
|
|
|
$x_i ≤ y_i ≤ z_i ≤ 1000$ として、($x_i$,$y_i$,$z_i$) が敗北構成の全範囲を表すとき、$\sum (x_i + y_i + z_i)$ を求めなさい。
|
|
|
|
# --hints--
|
|
|
|
`stoneGame()` は `167542057` を返す必要があります。
|
|
|
|
```js
|
|
assert.strictEqual(stoneGame(), 167542057);
|
|
```
|
|
|
|
# --seed--
|
|
|
|
## --seed-contents--
|
|
|
|
```js
|
|
function stoneGame() {
|
|
|
|
return true;
|
|
}
|
|
|
|
stoneGame();
|
|
```
|
|
|
|
# --solutions--
|
|
|
|
```js
|
|
// solution required
|
|
```
|