4.0 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5900f4b31000cf542c50ffc6 | Завдання 327: Кімнати Страху | 5 | 301984 | problem-327-rooms-of-doom |
--description--
Три кімнати поєднані між собою автоматичними дверима.

Кожні двері керуються карткою доступу. Щойно ви заходите в кімнату, двері автоматично зачиняються, і картка доступу не може бути використана знову. На старті автомат видає необмежену кількість карт, але в кожній кімнаті (включаючи стартову кімнату) є сканери. Якщо вони виявляють, що ви маєте більш ніж три картки, або якщо сканери помітять картку доступу на підлозі, всі двері зачиняться назавжди. Проте, у кожній кімнаті містяться поля, де можна безпечно зберігати будь-яку кількість карт безпеки, що можуть бути використані пізніше.
Якби ви спробували пройти всі кімнати по черзі, то, увійшовши в кімнату 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
.
assert.strictEqual(roomsOfDoom(), 34315549139516);
--seed--
--seed-contents--
function roomsOfDoom() {
return true;
}
roomsOfDoom();
--solutions--
// solution required