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