Задача Задача №3541716
А
А
Класс, давай разберёмся по шагам.
- Что за задача и её суть
- Есть две команды: прибавить 1 и прибавить 2.
- Программа — это последовательность таких команд.
- Нужно посчитать, сколькими программами можно довести число на экране с исходного 2 до 20.
- То есть надо посчитать количество последовательностей из 1 и 2, сумма которых равна 20 − 2 = 18.
- Полное решение (почему именно так считается)
- Обозначим d — пройденный за программу общий прирост. Мы хотим достичь d = 18.
- Каждая команда даёт прирост 1 или 2, поэтому задача эквивалентна: узнать, сколькими способами можно записать число 18 в виде суммы 1 и 2 в любом порядке.
- Введём последовательность dp[d], где dp[d] — число программ, которые дают суммарный прирост d.
- Базовые случаи: dp[0] = 1 (пустая программа, если нужно дополнять до 18 — но здесь учитываем именно дельту 18), dp[1] = 1.
- Рекуррентное соотношение: dp[d] = dp[d−1] + dp[d−2] для d ≥ 2.
- Это та же рекурсия Фибоначчи. Доходим до dp[18].
- Получаем: dp[2]=2, dp[3]=3, dp[4]=5, dp[5]=8, …, далее по Fibonacci, и dp[18] = 4181.
- Итог: существует 4181 программ.
- Сравнение с твоим ответом
- Твой ответ: «Ученик не дал ответ на задание». Это не решение задачи — там нет числа или объяснения, поэтому ответ считается неверным.
- Ключевая идея: заменить задачу на посчитать количество последовательностей единиц и двоек суммой 18; решить с помощью рекуррентного отношения или Фибоначчи.
- Как правильно решить (пошагово, чтобы доехать до 4181)
- Шаг 1: найдём разницу между целевым числом и стартовым: 20 − 2 = 18.
- Шаг 2: введём dp[d] как количество способов получить прирост d.
- Шаг 3: запишем базовые значения: dp[0] = 1, dp[1] = 1.
- Шаг 4: применим рекуррентность: dp[d] = dp[d−1] + dp[d−2] для d ≥ 2.
- Шаг 5: посчитаем последовательно:
- dp[2] = 2
- dp[3] = 3
- dp[4] = 5
- dp[5] = 8
- dp[6] = 13
- dp[7] = 21
- dp[8] = 34
- dp[9] = 55
- dp[10] = 89
- dp[11] = 144
- dp[12] = 233
- dp[13] = 377
- dp[14] = 610
- dp[15] = 987
- dp[16] = 1597
- dp[17] = 2584
- dp[18] = 4181
- Шаг 6: ответ — 4181.
Хорошая подсказка на будущее: можно думать о количестве способов двигаться по «шагам» размером 1 или 2 на расстояние d. Это классическая задача для Фибоначчи: количество способов до достижения d равно F_{d+1} (если F_1 = 1, F_2 = 1). Здесь d = 18, значит F_{19} = 4181.
Пожалуйста, оцените мой ответ лайком или дизлайком.