2022-01-21 01:00:18 +05:30
|
|
|
|
---
|
|
|
|
|
id: 5900f4d31000cf542c50ffe6
|
2022-01-22 20:38:20 +05:30
|
|
|
|
title: '問題 359: ヒルベルトの新しいホテル'
|
2022-01-21 01:00:18 +05:30
|
|
|
|
challengeType: 5
|
|
|
|
|
forumTopicId: 302019
|
|
|
|
|
dashedName: problem-359-hilberts-new-hotel
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
# --description--
|
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
ヒルベルトの最新の無限ホテルで部屋を取ろうと、人々 (1, 2, 3,... の番号付き) が無限に並んでいます。 ホテルには階 (1, 2, 3,... の番号付き) が無限にあり、各階には部屋 (1, 2, 3,... の番号付き) が無限にあります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
当初、ホテルに客はいませんでした。 ヒルベルトは、$n$ 番目の人にどのように部屋を割り当てるかを宣言しました。それによれば、$n$ 番目の人は、以下のいずれかを満たす最下階の最初の空き部屋を取ります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
- その階が空いている
|
|
|
|
|
- その階が空いておらず、その階で最後に部屋を取った人が $m$ 番目である場合は $m + n$ が完全平方数になる
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
1 階が空いているので、1 番目の人は 1 階の 1 号室を取ります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
1 + 2 = 3 は完全平方数ではないので、2 番目の人は 1 階の 2 号室を取れません。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
しかし 2 階が空いているので、2 番目の人は代わりに 2 階の 1 号室を取ります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
1 + 3 = 4 は完全平方数なので、3 番目の人は 1 階の 2 号室を取ります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
最終的には、並んでいたすべての人がホテルの部屋を取れます。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
$P(f, r)$ の結果を次のように定義します: $n$ 番目の人が $f$ 階の $r$ 号室を取る場合は $n$、誰もその部屋を取らない場合は 0 になります。 いくつかの例を次に示します。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
2022-04-02 14:16:30 +05:30
|
|
|
|
$$\begin{align} & P(1, 1) = 1 \\\\
|
|
|
|
|
& P(1, 2) = 3 \\\\ & P(2, 1) = 2 \\\\
|
|
|
|
|
& P(10, 20) = 440 \\\\ & P(25, 75) = 4863 \\\\
|
|
|
|
|
& P(99, 100) = 19454 \end{align}$$
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
$f × r = 71\\,328\\,803\\,586\\,048$ となるすべての正の数 $f$, $r$ について $P(f, r)$ の総和を求め、下位 8 桁を答えなさい。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
|
|
# --hints--
|
|
|
|
|
|
2022-01-22 20:38:20 +05:30
|
|
|
|
`hilbertsNewHotel()` は `40632119` を返す必要があります。
|
2022-01-21 01:00:18 +05:30
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
assert.strictEqual(hilbertsNewHotel(), 40632119);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# --seed--
|
|
|
|
|
|
|
|
|
|
## --seed-contents--
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
function hilbertsNewHotel() {
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
hilbertsNewHotel();
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# --solutions--
|
|
|
|
|
|
|
|
|
|
```js
|
|
|
|
|
// solution required
|
|
|
|
|
```
|