Исполнитель ШКОЛКОВО преобразует число баллов ЕГЭ, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь ;
2. Прибавь ;
3. Возведи в квадрат.
Первая команда увеличивает число на экране на , вторая увеличивает его на
, третья заменяет число на экране на число, равное квадрату этого числа.
Программа для исполнителя ШКОЛКОВО это последовательность команд.
Сколько существует программ, для которых при исходном числе результатом является число
и при этом траектория вычислений содержит число
?
Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы при исходном числе
траектория будет состоять из чисел
.
Решение 1 (Рекурсия)
def f(start, finish):
if start == finish:
return 1
if start > finish:
return 0
return f(start + 1, finish) + f(start + 5, finish) + f(start * start, finish)
print(f(2, 5) * f(5, 26))
Решение 2 (Динамика)
a = [0] * 27
a[2] = 1
for i in range(3, 27):
a[i] += a[i - 1] + a[i - 5]
sq = int(i ** 0.5)
if sq ** 2 == i:
a[i] += a[sq]
if i == 5:
for j in range(1, 5):
a[j] = 0
print(a[26])
Решение 3 (Динамика)
a = [0] * 10000
a[2] = 1
for i in range(2, 26):
if i == 5:
for j in range(6, 27):
a[j] = 0
a[i + 1] += a[i]
a[i + 5] += a[i]
a[i * i] += a[i]
print(a[26])