Задание 23. Информатика. 2022-19

Просмотры: 61
Изменено: 23 ноября 2024

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

  1. Прибавить \(1\)
  2. Умножить на \(3\)

Первая из них увеличивает число на экране на \(1\), вторая умножает его на \(3\). Программа для исполнителя Счётчик — это последовательность команд. Сколько существует таких программ, для которых при исходном числе \(2\) результатом является число \(33\) и при этом траектория вычислений программы содержит число \(10\) и не содержит числа \(29\)?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы \(121\) при исходном числе \(4\) траектория будет состоять из чисел \(5\), \(15\), \(16\).

Решение:

Python


def f(n, target):
    if n == target:
        return 1
    elif n == 29 or n > target:
        return 0
    else:
        return f(n+1, target) + f(n*3, target)

print(f(2, 10)*f(10, 33))

Ответ: 6