Условие: № 11240 (Уровень: Средний) задача с сайта kompege.ru
• Статья подготовлена командой itpy
• Полный разбор задачи в Notion
(М. Ишимов) Исполнитель преобразует число на экране.
У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Прибавить 2
B. Возвести в квадрат
C. Умножить на 3
Программа для исполнителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 2 результатом является число 64, если после выполнения команды B можно выполнить только команду A или C?
Решение через Python и комментарии к нему:
Комментарии к коду решения:
- def F(a, b, flag): - Определение функции F с параметрами a - переменная старта и траектории, b - переменная стоп, и flag - переменная для учета действий.
- if a >= b: - Проверка условия: если a больше или равно b (то есть переменная a превысила наше условие b).
- return a == b - Возвращаем результат сравнения a и b (True, если равны, иначе False).
- if flag == "B": - Проверка условия: если flag равен "B" (если на предыдущем шаге была выполнена команда "B”.
- return F(a + 2, b, "A") + F(a * 3, b, "C") - Рекурсивный вызов функции F с новыми параметрами исходя из условий.
- return F(a + 2, b, "A") + F(a**2, b, "B") + F(a * 3, b, "C") - Рекурсивный вызов функции F с новыми параметрами.
- print(F2, 64, 0)) - Вывод результата вызова функции F с начальными параметрами (2, 64, 0).