Исполнитель преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
Программа для исполнителя – это последовательность команд.
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы АСВ при исходном числе 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