Files

4.0 KiB
Raw Permalink Blame History

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