Гусь преобразует число, записанное на экране. У гуся есть три команды, которым присвоены номера:
1. Прибавь 4
2. Прибавь 7
3. Раздели нацело на 2
Первая команда увеличивает число на экране на 4, вторая увеличивает его на 7, третья делит на 2 нацело (остаток отбрасывается). Программа для исполнителя – это последовательность команд. Сколько существует программ, которые состоят из 10 команд и при исходном числе 1 результатом является 1?
Решение 1
def f(a, c):
if c == 10:
return a == 1
return f(a + 4, c + 1) + f(a + 7, c + 1) + f(a // 2, c + 1)
print(f(1, 0))
Решение 2
a = [1]
for i in range(10):
n = len(a)
for j in range(n):
l = a.pop(0)
a.append(l + 4)
a.append(l + 7)
a.append(l // 2)
print(a.count(1))