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

Просмотры: 21
Изменено: 7 сентября 2024

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

  1. Вычти \(1\)
  2. Найди целую часть от деления на \(3\)

Первая команда уменьшает число на экране на \(1\), вторая число на экране на число, равное целой части от деления числа на экране на \(3\). Программа для Вычислителя — это последовательность команд. Сколько существует таких программ, которые преобразуют исходное число \(33\) в число \(1\) и при этом траектория вычислений программы содержит число \(9\)?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы \(121\) при исходном числе \(18\) траектория будет состоять из чисел \(17\), \(5\), \(4\).

Решение:

Python


def f(n, target):
    if n == target:
        return 1
    elif n < target:
        return 0
    else:
        return f(n-1, target) + f(n//3, target)

print(f(33, 9)*f(9, 1))

Ответ: 72