Исполнитель преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
Программа для исполнителя – это последовательность команд.
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы АСВ при исходном числе 7 траектория состоит из чисел 8, 11, 13.
Решение:
|
def f(x,y): if x>y: return 0 if x==y: return 1 if x<y: return f(x+1,y)+f(x+2,y)+f(x+3,y) print(f(5,7)*f(7,11)) |
Пояснение
Функция f(x, y)
:
if x > y:
Если текущее значение x
больше y
, то нет способов достичь y
из x
, поэтому возвращаем 0.
if x == y:
Если текущее значение x
равно y
, то есть ровно один способ (остаться на месте), поэтому возвращаем 1.
if x < y:
Если текущее значение x
меньше y
, то мы можем добавить 1, 2 или 3 к x
, и результат будет суммой всех возможных способов достижения y
из x
через x + 1
, x + 2
и x + 3
.
Основной код
print(f(5, 7) * f(7, 11))
:
f(5, 7)
находит количество способов преобразования числа 5 в число 7.
f(7, 11)
находит количество способов преобразования числа 7 в число 11.
- Результат умножения этих двух значений дает общее количество программ, которые преобразуют число 5 в число 11, проходя через число 7.
Ответ: 14