63 lines
4.0 KiB
Markdown
63 lines
4.0 KiB
Markdown
---
|
||
id: 5900f4b31000cf542c50ffc6
|
||
title: 'Завдання 327: Кімнати Страху'
|
||
challengeType: 5
|
||
forumTopicId: 301984
|
||
dashedName: problem-327-rooms-of-doom
|
||
---
|
||
|
||
# --description--
|
||
|
||
Три кімнати поєднані між собою автоматичними дверима.
|
||
|
||
<img class="img-responsive center-block" alt="три кімнати, поєднані між собою автоматичними дверима" src="https://cdn.freecodecamp.org/curriculum/project-euler/rooms-of-doom.gif" style="background-color: white; padding: 10px;" />
|
||
|
||
Кожні двері керуються карткою доступу. Щойно ви заходите в кімнату, двері автоматично зачиняються, і картка доступу не може бути використана знову. На старті автомат видає необмежену кількість карт, але в кожній кімнаті (включаючи стартову кімнату) є сканери. Якщо вони виявляють, що ви маєте більш ніж три картки, або якщо сканери помітять картку доступу на підлозі, всі двері зачиняться назавжди. Проте, у кожній кімнаті містяться поля, де можна безпечно зберігати будь-яку кількість карт безпеки, що можуть бути використані пізніше.
|
||
|
||
Якби ви спробували пройти всі кімнати по черзі, то, увійшовши в кімнату 3, ви б використали усі три картки і опинилися б у пастці назавжди!
|
||
|
||
Однак, якщо ви будете використовувати коробки для зберігання, то втеча буде можливою. Наприклад, ви можете увійти в кімнату 1, використовуючи першу карту, розмістити одну картку в коробці для зберігання та використати вашу третю картку для того, щоб вийти з кімнати на старт. Потім, після того, як візьмете ще три картки з автомату, ви зможете використати одну для входу в кімнату 1 і забрати картку, яку ви поклали в поле зберігання кілька хвилин тому. Тепер у вас знову є три картки і ви зможете пройти крізь наступні двері. Цей спосіб дозволяє вам пройти всі три кімнати, використавши шість карток доступу.
|
||
|
||
Можна пройти 6 кімнат, використавши загалом 123 картки безпеки, при тому, що при собі можна мати максимум 3.
|
||
|
||
Нехай $C$ буде максимальною кількістю карт, що можна мати при собі в будь-який час.
|
||
|
||
Нехай $R$ буде кількістю кімнат, через які потрібно пройти.
|
||
|
||
Нехай $M(C, R)$ буде мінімальною кількістю карток, що необхідно взяти в автоматі, щоб пройти $R$ кімнат, при можливості мати при собі $C$ карток.
|
||
|
||
Наприклад, $M(3, 6) = 123$ та $M(4, 6) = 23$.
|
||
|
||
І $\sum M(C, 6) = 146$ за $3 ≤ C ≤ 4$.
|
||
|
||
Бачите, що $\sum M(C, 10) = 10382$ за $3 ≤ C ≤ 10$.
|
||
|
||
Знайдіть $\sum M(C, 30)$ за $3 і ≤ C ≤ 40$.
|
||
|
||
# --hints--
|
||
|
||
`roomsOfDoom()` має повернути `34315549139516`.
|
||
|
||
```js
|
||
assert.strictEqual(roomsOfDoom(), 34315549139516);
|
||
```
|
||
|
||
# --seed--
|
||
|
||
## --seed-contents--
|
||
|
||
```js
|
||
function roomsOfDoom() {
|
||
|
||
return true;
|
||
}
|
||
|
||
roomsOfDoom();
|
||
```
|
||
|
||
# --solutions--
|
||
|
||
```js
|
||
// solution required
|
||
```
|