Разбор 23.PNG

№ 8479 (Уровень: Базовый)

(В. Рыбальченко) Исполнитель Великий Изменитель преобразует число, записанное на доске. У Великого Изменителя есть три команды:

1. Вычти 5

2. Вычти 4

3. Раздели на 2

Первая команда уменьшает число на 5, вторая команда уменьшает его на 4, третья команда применяется только к четным числам и делит их на 2.

Сколько существует программ, для которых при исходном числе 100 результатом является число 2, а траектория вычислений обязательно содержит числа 73, 22 и не содержит число 50?

Untitled

Комментарии к коду программы:

  1. def f(a, b): - Создаем функцию f, которая принимает два аргумента: a - траектория движения, b - точка выхода.
  2. if a < b or a == 50: - Проверяем, меньше ли значение a значения b или равно ли значение a 50 (траектория не содержит).
  3. return 0 - Возвращаем значение 0, если идя по траектории мы проскакиваем точку выхода b или попадаем на 50.
  4. elif a == b: - Проверяем, равно ли значение a значению b.
  5. return 1 - Возвращаем значение 1, если идя по траектории мы попадаем в нашу точку выхода b.
  6. else: - В противном случае мы находимся в пути, значит вызываем рекурсию.
  7. if a % 2 == 0: - Проверяем, является ли значение a четным числом.