Задача
Скількома способами можна потрапити на n-ту сходинку, якщо можна ступати на наступну, переступати через одну і через дві сходинки.
Вхідні дані
Одне число n — номер сходинки (n⩽60).
Вихідні дані
Вивести кількість способів, якими можна потрапити на n-ту сходинку.
Тести
Вхідні дані | Вихідні дані |
---|---|
0 | 1 |
5 | 13 |
15 | 5768 |
32 | 181997601 |
60 | 4680045560037375 |
Код № 1
Рішення
Розіб’ємо задачу на декілька простих. Спочатку розрахуємо кількість способів для однієї сходинки (1 спосіб), потім для двох (2 способи: 0 → 1 → 2; 0 → 2) і також потрібно врахувати випадок, коли кількість сходинок дорівнює нулю (1 спосіб). Далі легко помітити, що кожне наступне значення дорівнює сумі трьох попередніх звідки і отримуємо формулу:
arr[i] = arr[i-1] + arr[i-2] + arr[i-3]
Також цю задачу можна вирішити за допомогою рекурсії. Я використала рекурсію з запам’ятовуванням для того, щоб уникнути переповнення стеку викликів (загальна ідея така: при кожному виклику функції перевіряємо, чи маємо ми вже це значення, і якщо ні, рахуємо його. Таким чином ми будемо використовувати кожне значення лише один раз).
Код № 2
Посилання
Умова задачі на E-Olymp
Код задачі № 1 на Ideone
Код задачі № 2 на Ideone