Разбор 23.PNG

№ 11240 (Уровень: Средний) задача с сайта kompege.ru

**(М. Ишимов)** Исполнитель преобразует число на экране.

У исполнителя есть три команды, которые обозначены латинскими буквами:

A. Прибавить 2

B. Возвести в квадрат

C. Умножить на 3

Программа для исполнителя – это последовательность команд.

Сколько существует программ, для которых при исходном числе 2 результатом является число 64, если после выполнения команды B можно выполнить только команду A или C?

Untitled

Комментарии к коду решения:

  1. def F(a, b, flag): - Определение функции F с параметрами a - переменная старта и траектории, b - перменная стоп и flag - переменная для учета действий.
  2. if a >= b: - Проверка условия: если a больше или равно b (то есть переменная a превысила наше условие b).
  3. return a == b - Возвращаем результат сравнения a и b (True, если равны, иначе False).
  4. if flag == "B": - Проверка условия: если flag равен "B" (если на предыдущем шаге была выполнена команда "B”.
  5. return F(a + 2, b, "A") + F(a * 3, b, "C") - Рекурсивный вызов функции F с новыми параметрами исходя из условий.
  6. return F(a + 2, b, "A") + F(a**2, b, "B") + F(a * 3, b, "C") - Рекурсивный вызов функции F с новыми параметрами.
  7. print(f(2, 64, 0)) - Вывод результата вызова функции F с начальными параметрами (2, 64, 0).

def F(a, b, flag):
    if a >= b:
        return a == b
    if flag == "B":
        return F(a + 2, b, "A") + F(a * 3, b, "C")
    return F(a+2, b, "A") + F(a**2, b, "B") + F(a*3, b, "C")

print(F(2, 64, 0))

Ответ:

**Присоединяйтесь и готовьтесь с нами: t.me/informatika_kege_itpy**

Untitled

Автор статьи: @ilandroxxy