Исполнитель преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2.
Программа для исполнителя – это последовательность команд.
Сколько существует программ, которые преобразуют исходное число 1 в число 12 и при этом содержат не более двух команд умножения?
Ответ:
СтатГрад Вариант ИН2110402 30.03.2022 – задание №23
Решение:
|
1 2 3 4 5 6 7 8 9 10 11 |
def f(x, p): if p < 0: return 0 if x==12 and p>=0: return 1 if x>12: return 0 a = f(x+1, p) b = f(x*2, p-1) return a+b print(f(1,2)) |
или
|
1 2 3 4 5 6 7 8 9 10 11 |
def f(x,y,p): if x > y: return 0 if x == y: return 1 if x < y: k = f(x+1,y,p) if p != 2: k += f(x*2,y,p+1) return k print(f(1,12, 0)) |
Ответ: 16