№23 — примеры решений

Один эталонный разбор.

Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. вычти 3 B. вычти 6 C. найди целую часть от деления на 2 Программа для исполнителя - это последовательность команд. Сколько существует программ, для которых при исходном числе 86 результатом является 12, при этом траектория вычислений содержит число 53 и не содержит 36? Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 27 траектория состоит из чисел 13, 7, 4.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    if n == 36: return 0
    return f(n-3, m) + f(n-6, m) + f(n//2, m)
print(f(86, 53) * f(53, 12))
Ответ:144
📚 Все задачи с разбором 79
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: A. Вычти 1 B. Найди целую часть от деления на 2 Первая из них уменьшает число на экране на 1, вторая заменяет число на экране на целую часть от деления числа на 2. Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 40 результатом является 6, и при этом траектория вычислений содержит число 17? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы АВВ при исходном числе 10 траектория состоит из чисел 9, 4, 2.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    return f(n-1, m) + f(n//2, m)
print(f(40, 17) * f(17, 6))
Ответ:56
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: A. Вычти 1 B. Найди целую часть от деления на 2 Первая из них уменьшает число на экране на 1, вторая заменяет число на экране на целую часть от деления числа на 2. Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 20 результатом является 0, и при этом траектория вычислений содержит число 6 и не содержит число 5? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ВАА при исходном числе 10 траектория состоит из чисел 5, 4, 3.
Сколько существует программ, для которых при исходном числе 40 результатом является 6, и при этом траектория вычислений содержит число 16? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы АВВ при исходном числе 10 траектория состоит из чисел 9, 4, 2.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    if n == 5: return 0
    return f(n-1, m) + f(n//2, m)
print(f(20, 6) * f(6, 0))
Ответ:60
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Вычесть 1 B. Вычесть 4 C. Найти целую часть от деления на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 13 результатом является 0, и при этом траектория вычислений содержит число 11 и не содержит число 4? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы СВА при исходном числе 18 траектория состоит из чисел 6, 2, 1.
Сколько существует программ, для которых при исходном числе 19 результатом является 2, при этом траектория вычислений не содержит числа 7 и содержит 13? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 22 траектория состоит из чисел 7, 3, 2.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    if n == 4: return 0
    return f(n-1, m) + f(n-4, m) + f(n//3, m)
print(f(13, 11) * f(11, 0))
Ответ:68
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Вычесть 1 B. Вычесть 6 C. Найти целую часть от деления на 2 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 30 результатом является 6, и при этом траектория вычислений содержит число 13 и не содержит число 16? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы СВА при исходном числе 18 траектория состоит из чисел 6, 2, 1.
Сколько существует таких программ, которые исходное число 34 преобразуют в число 6 и при этом траектория вычислений программы содержит числа 19 и 20 и не содержит числа 24? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ABC при исходном числе 14 траектория состоит из чисел 13, 7, 3.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    if n == 16: return 0
    return f(n-1, m) + f(n-6, m) + f(n//2, m)
print(f(30, 13) * f(13, 6))
Ответ:115
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: A. Вычти 2 B. Найди целую часть от деления на 2 Первая из них уменьшает число на экране на 2, вторая заменяет число на экране на целую часть от деления числа на 2. Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 20 результатом является 0, и при этом траектория вычислений содержит число 16? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ВАА при исходном числе 10 траектория состоит из чисел 5, 3, 1.
Сколько существует программ, для которых при исходном числе 38 результатом является число 2 и при этом траектория вычислений содержит число 16? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы ABB при исходном числе 13 траектория состоит из чисел 11, 5, 2.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    return f(n-2, m) + f(n//2, m)
print(f(20, 16) * f(16, 0))
Ответ:36
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: A. Вычти 1 B. Найди целую часть от деления на 2 Первая из них уменьшает число на экране на 1, вторая заменяет число на экране на целую часть от деления числа на 2. Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 22 результатом является 0, и при этом траектория вычислений содержит число 1 и не содержит число 11? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ВАА при исходном числе 10 траектория состоит из чисел 5, 4, 3.
Сколько существует программ, для которых при исходном числе 30 результатом является число 1, и при этом траектория вычислений содержит число 12? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 122 при исходном числе 10 траектория состоит из чисел 9, 4, 2.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    if n == 11: return 0
    return f(n-1, m) + f(n//2, m)
print(f(22, 1) * f(1, 0))
Ответ:376
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: A. Вычти 2 B. Найди целую часть от деления на 2 Первая из них уменьшает число на экране на 2, вторая заменяет число на экране на целую часть от деления числа на 2. Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 20 результатом является 0, и при этом траектория вычислений содержит число 16? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ВАА при исходном числе 10 траектория состоит из чисел 5, 3, 1.
Сколько существует программ, для которых при исходном числе 38 результатом является число 2 и при этом траектория вычислений содержит число 16? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы ABB при исходном числе 13 траектория состоит из чисел 11, 5, 2.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    return f(n-2, m) + f(n//2, m)
print(f(20, 16) * f(16, 0))
Ответ:36
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Прибавить 3 B. Прибавить 7 C. Умножить на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является 51, и при этом траектория вычислений содержит число 3 и не содержит число 13? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы СВА при исходном числе 1 траектория состоит из чисел 3, 10, 13.
Сколько существует таких программ, которые исходное число 12 преобразуют в 89, и при этом траектория вычислений программы содержит числа 40 и 72 и не содержит 56? Траектория вычислений программы - это последовательность результатов выполнения всех команд. Например, для программы CBA при исходном числе 7 траектория состоит из чисел 21, 28, 31.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n > m: return 0
    if n == 13: return 0
    return f(n+3, m) + f(n+7, m) + f(n*3, m)
print(f(1, 3) * f(3, 51))
Ответ:324
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Прибавить 1 B. Прибавить 2 C. Умножить на 2 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является 15, и при этом траектория вычислений содержит число 13 и не содержит число 4? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы СВА при исходном числе 1 траектория состоит из чисел 2, 4, 5.
Сколько существует программ, для которых при исходном числе 3 результатом является число 18, при этом траектория вычислений содержит число 14 и не содержит 8? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 7 траектория будет состоять из чисел 14, 16, 17.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n > m: return 0
    if n == 4: return 0
    return f(n+1, m) + f(n+2, m) + f(n*2, m)
print(f(1, 13) * f(13, 15))
Ответ:360
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Вычесть 1 B. Вычесть 2 C. Найти целую часть от деления на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 18 результатом является 3, и при этом траектория вычислений содержит число 4 и не содержит число 7? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы СВА при исходном числе 18 траектория состоит из чисел 6, 4, 3.
Сколько существует программ, для которых при исходном числе 19 результатом является число 4, при этом траектория вычислений содержит число 6 и не содержит 13? Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 13 траектория состоит из чисел 4, 2.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    if n == 7: return 0
    return f(n-1, m) + f(n-2, m) + f(n//3, m)
print(f(18, 4) * f(4, 3))
Ответ:212
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Вычесть 1 B. Вычесть 4 C. Найти целую часть от деления на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 14 результатом является 0, и при этом траектория вычислений содержит число 2 и не содержит число 3? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы СВА при исходном числе 18 траектория состоит из чисел 6, 2, 1.
Сколько существует программ, для которых при исходном числе 19 результатом является число 2, при этом траектория вычислений не содержит числа 8 и содержит 14? Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 22 траектория состоит из чисел 7, 3, 2.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    if n == 3: return 0
    return f(n-1, m) + f(n-4, m) + f(n//3, m)
print(f(14, 2) * f(2, 0))
Ответ:69
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Прибавить 1 B. Прибавить 2 C. Умножить на 2 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является 17, и при этом траектория вычислений содержит число 3 и не содержит число 12? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы СВА при исходном числе 1 траектория состоит из чисел 2, 4, 5.
Сколько существует программ, для которых при исходном числе 3 результатом является число 20, при этом траектория вычислений содержит число 7 и не содержит 10? Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 7 траектория состоит из чисел 14, 16, 17.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n > m: return 0
    if n == 12: return 0
    return f(n+1, m) + f(n+2, m) + f(n*2, m)
print(f(1, 3) * f(3, 17))
Ответ:792
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Прибавить 1 B. Умножить на 3 C. Прибавить 5 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является 17, и при этом траектория вычислений содержит число 9 и не содержит число 5? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы СВА при исходном числе 1 траектория состоит из чисел 6, 18, 19.
Сколько существует программ, для которых при исходном числе 2 результатом является число 21, при этом траектория вычислений содержит число 7 и не содержит 16? Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 7 траектория состоит из чисел 12, 36, 37.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n > m: return 0
    if n == 5: return 0
    return f(n+1, m) + f(n*3, m) + f(n+5, m)
print(f(1, 9) * f(9, 17))
Ответ:45
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: A. Вычти 2 B. Найди целую часть от деления на 2 Первая из них уменьшает число на экране на 2, вторая заменяет число на экране на целую часть от деления числа на 2. Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 27 результатом является 0, и при этом траектория вычислений содержит число 2? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ВАА при исходном числе 10 траектория состоит из чисел 5, 3, 1.
Сколько существует программ, для которых при исходном числе 48 результатом является число 2, и при этом траектория вычислений содержит число 16? Траектория вычислений программы это последовательность результатов выполнения всех команд программы. Например, для программы ABB при исходном числе 13 траектория состоит из чисел 11, 5, 2.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    return f(n-2, m) + f(n//2, m)
print(f(27, 2) * f(2, 0))
Ответ:72
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами: A. Вычти 2 B. Найди целую часть от деления на 2 Первая из них уменьшает число на экране на 2, вторая заменяет число на экране на целую часть от деления числа на 2. Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 20 результатом является 0, и при этом траектория вычислений содержит число 16? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ВАА при исходном числе 10 траектория состоит из чисел 5, 3, 1.
Сколько существует программ, для которых при исходном числе 38 результатом является число 2 и при этом траектория вычислений содержит число 16? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы ABB при исходном числе 13 траектория состоит из чисел 11, 5, 2.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n < m: return 0
    return f(n-2, m) + f(n//2, m)
print(f(20, 16) * f(16, 0))
Ответ:36
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Прибавить 1 B. Умножить на 2 C. Возвести в квадрат Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является число 40, при этом траектория вычислений содержит число 10, не содержит числа 11 и не содержит числа 12? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 4 траектория будет состоять из чисел 16, 32, 33.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n > m:
        return 0
    if n == 11:
        return 0
    if n == 12:
        return 0
    return f(n + 1, m) + f(n * 2, m) + f(n ** 2, m)
print(f(2, 10) * f(10, 40))
Ответ:22
У исполнителя есть три команды: – вычесть 1 – вычесть 2 – разделить нацело на 4 Определите количество программ исполнителя, которые преобразуют число 26 в 3, при условии, что траектория выполнения программы содержит число 20. В ответ запишите целое число – количество программ.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n < m:
        return 0
    return f(n - 1, m) + f(n - 2, m) + f(n // 4, m)
print(f(26, 20) * f(20, 3))
Ответ:34749
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Вычти 3 B. Найди целую часть от деления на 2 C. Найди целую часть от деления на 5 Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 120 результатом является число 6 и при этом траектория вычислений содержит число 49 и не содержит число 40? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы ABB при исходном числе 20 траектория состоит из чисел 17, 8, 4.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n < m:
        return 0
    if n == 40:
        return 0
    return f(n - 3, m) + f(n // 2, m) + f(n // 5, m)
print(f(120, 49) * f(49, 6))
Ответ:40
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Прибавить 2 B. Умножить на 3 C. Прибавить 5 Сколько существует программ, которые преобразуют число 3 в число 50, при этом траектория вычислений содержит число 17 и не содержит число 26?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n > m:
        return 0
    if n == 26:
        return 0
    return f(n + 2, m) + f(n * 3, m) + f(n + 5, m)
print(f(3, 17) * f(17, 50))
Ответ:1845
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Вычесть 4 B. Разделить нацело на 3 C. Вычесть 7 Сколько существует программ, которые преобразуют число 81 в число 4, при этом траектория вычислений содержит число 20 и не содержит число 13?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n < m:
        return 0
    if n == 13:
        return 0
    return f(n - 4, m) + f(n // 3, m) + f(n - 7, m)
print(f(81, 20) * f(20, 4))
Ответ:830
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Прибавить 3 B. Умножить на 2 C. Прибавить 4 Определите количество программ, которые преобразуют число 2 в число 60, если траектория вычислений содержит число 14 и не содержит чисел 29 и 30.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n > m:
        return 0
    if n == 29 or n == 30:
        return 0
    return f(n + 3, m) + f(n * 2, m) + f(n + 4, m)
print(f(2, 14) * f(14, 60))
Ответ:13888
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Вычесть 5 B. Разделить нацело на 2 C. Вычесть 3 Сколько существует программ, которые преобразуют число 100 в число 5, при этом траектория вычислений содержит число 25 и не содержит чисел 17 и 18?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n < m:
        return 0
    if n == 17 or n == 18:
        return 0
    return f(n - 5, m) + f(n // 2, m) + f(n - 3, m)
print(f(100, 25) * f(25, 5))
Ответ:2261294
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Прибавить 1 B. Прибавить 4 C. Умножить на 2 Сколько существует программ, которые преобразуют число 1 в число 35, при этом траектория вычислений содержит число 9 и не содержит число 18?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n > m:
        return 0
    if n == 18:
        return 0
    return f(n + 1, m) + f(n + 4, m) + f(n * 2, m)
print(f(1, 9) * f(9, 35))
Ответ:30192
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Вычесть 1 B. Разделить нацело на 2 C. Вычесть 6 Определите количество программ, которые преобразуют число 64 в число 2, при этом траектория вычислений содержит число 16 и не содержит число 10.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n < m:
        return 0
    if n == 10:
        return 0
    return f(n - 1, m) + f(n // 2, m) + f(n - 6, m)
print(f(64, 16) * f(16, 2))
Ответ:5281980
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Прибавить 2 B. Умножить на 2 C. Прибавить 3 Сколько существует программ, которые преобразуют число 4 в число 48, при этом траектория вычислений содержит число 12 и не содержит число 25?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n > m:
        return 0
    if n == 25:
        return 0
    return f(n + 2, m) + f(n * 2, m) + f(n + 3, m)
print(f(4, 12) * f(12, 48))
Ответ:40326
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Вычесть 2 B. Разделить нацело на 3 C. Вычесть 5 Сколько существует программ, которые преобразуют число 90 в число 6, при этом траектория вычислений содержит число 28 и не содержит число 19?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n < m:
        return 0
    if n == 19:
        return 0
    return f(n - 2, m) + f(n // 3, m) + f(n - 5, m)
print(f(90, 28) * f(28, 6))
Ответ:4109976
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Прибавить 5 B. Умножить на 2 C. Прибавить 1 Определите количество программ, которые преобразуют число 5 в число 70, при этом траектория вычислений содержит число 20 и не содержит чисел 33 и 34.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n > m:
        return 0
    if n == 33 or n == 34:
        return 0
    return f(n + 5, m) + f(n * 2, m) + f(n + 1, m)
print(f(5, 20) * f(20, 70))
Ответ:13318745
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Вычесть 3 B. Разделить нацело на 2 C. Вычесть 4 Сколько существует программ, которые преобразуют число 72 в число 3, при этом траектория вычислений содержит число 24 и не содержит чисел 11 и 12?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n < m:
        return 0
    if n == 11 or n == 12:
        return 0
    return f(n - 3, m) + f(n // 2, m) + f(n - 4, m)
print(f(72, 24) * f(24, 3))
Ответ:231984
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Прибавить 1 B. Умножить на 3 C. Прибавить 6 Сколько существует программ, которые преобразуют число 3 в число 45, при этом траектория вычислений содержит число 15 и не содержит число 22?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n > m:
        return 0
    if n == 22:
        return 0
    return f(n + 1, m) + f(n * 3, m) + f(n + 6, m)
print(f(3, 15) * f(15, 45))
Ответ:5512
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Вычесть 7 B. Разделить нацело на 2 C. Вычесть 2 Сколько существует программ, которые преобразуют число 84 в число 7, при этом траектория вычислений содержит число 21 и не содержит число 14?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n < m:
        return 0
    if n == 14:
        return 0
    return f(n - 7, m) + f(n // 2, m) + f(n - 2, m)
print(f(84, 21) * f(21, 7))
Ответ:57108
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Прибавить 2 B. Умножить на 2 C. Умножить на 3 Сколько существует программ, которые преобразуют число 2 в число 54, при этом траектория вычислений содержит число 18 и не содержит число 36?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n > m:
        return 0
    if n == 36:
        return 0
    return f(n + 2, m) + f(n * 2, m) + f(n * 3, m)
print(f(2, 18) * f(18, 54))
Ответ:90
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Вычесть 4 B. Разделить нацело на 2 C. Разделить нацело на 3 Сколько существует программ, которые преобразуют число 96 в число 4, при этом траектория вычислений содержит число 24 и не содержит число 8?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n < m:
        return 0
    if n == 8:
        return 0
    return f(n - 4, m) + f(n // 2, m) + f(n // 3, m)
print(f(96, 24) * f(24, 4))
Ответ:24
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Прибавить 2 B. Прибавить 5 C. Умножить на 2 Сколько существует программ, которые преобразуют число 1 в число 41, при этом траектория вычислений содержит число 11 и не содержит чисел 23 и 24?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n > m:
        return 0
    if n == 23 or n == 24:
        return 0
    return f(n + 2, m) + f(n + 5, m) + f(n * 2, m)
print(f(1, 11) * f(11, 41))
Ответ:800
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Вычесть 5 B. Разделить нацело на 5 C. Вычесть 2 Сколько существует программ, которые преобразуют число 75 в число 5, при этом траектория вычислений содержит число 15 и не содержит число 9?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n < m:
        return 0
    if n == 9:
        return 0
    return f(n - 5, m) + f(n // 5, m) + f(n - 2, m)
print(f(75, 15) * f(15, 5))
Ответ:112005
Исполнитель преобразует число на экране. У исполнителя есть три команды: A. Прибавить 2 B. Умножить на 2 C. Прибавить 5 Сколько существует программ, которые преобразуют число 4 в число 52, при этом траектория вычислений содержит число 16 и не содержит число 31?
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m:
        return 1
    if n > m:
        return 0
    if n == 31:
        return 0
    return f(n + 2, m) + f(n * 2, m) + f(n + 5, m)
print(f(4, 16) * f(16, 52))
Ответ:4248
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Вычесть 2 B. Вычесть 5 C. Найти целую часть от деления на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 90 результатом является 4, при этом траектория вычислений содержит хотя бы одно из чисел 30 или 12?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a < b:
        return 0
    return f(a - 2, b) + f(a - 5, b) + f(a // 3, b)
@lru_cache(None)
def g(a, b):
    if a == 30 or a == 12:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return g(a - 2, b) + g(a - 5, b) + g(a // 3, b)
print(f(90, 4) - g(90, 4))
Ответ:21879120
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Вычесть 2 B. Вычесть 7 C. Найти целую часть от деления на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 100 результатом является 3, при этом траектория вычислений содержит ровно одно из чисел 33 или 11?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a < b:
        return 0
    return f(a - 2, b) + f(a - 7, b) + f(a // 3, b)
@lru_cache(None)
def f1(a, b):
    if a == 11:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return f1(a - 2, b) + f1(a - 7, b) + f1(a // 3, b)
@lru_cache(None)
def f2(a, b):
    if a == 33:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return f2(a - 2, b) + f2(a - 7, b) + f2(a // 3, b)
print(f(100, 33) * f1(33, 3) + f2(100, 11) * f(11, 3))
Ответ:6312510
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Вычесть 4 B. Вычесть 6 C. Найти целую часть от деления на 5 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 125 результатом является 5, при этом траектория вычислений содержит ровно одно из чисел 25 или 9?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a < b:
        return 0
    return f(a - 4, b) + f(a - 6, b) + f(a // 5, b)
@lru_cache(None)
def f1(a, b):
    if a == 9:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return f1(a - 4, b) + f1(a - 6, b) + f1(a // 5, b)
@lru_cache(None)
def f2(a, b):
    if a == 25:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return f2(a - 4, b) + f2(a - 6, b) + f2(a // 5, b)
print(f(125, 25) * f1(25, 5) + f2(125, 9) * f(9, 5))
Ответ:5062707
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Вычесть 5 B. Вычесть 8 C. Найти целую часть от деления на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 96 результатом является 4, при этом траектория вычислений содержит хотя бы одно из чисел 32 или 10?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a < b:
        return 0
    return f(a - 5, b) + f(a - 8, b) + f(a // 3, b)
@lru_cache(None)
def g(a, b):
    if a == 32 or a == 10:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return g(a - 5, b) + g(a - 8, b) + g(a // 3, b)
print(f(96, 4) - g(96, 4))
Ответ:1670
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Вычесть 6 B. Вычесть 7 C. Найти целую часть от деления на 2 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 95 результатом является 3, при этом траектория вычислений содержит ровно одно из чисел 41 или 20?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a < b:
        return 0
    return f(a - 6, b) + f(a - 7, b) + f(a // 2, b)
@lru_cache(None)
def f1(a, b):
    if a == 20:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return f1(a - 6, b) + f1(a - 7, b) + f1(a // 2, b)
@lru_cache(None)
def f2(a, b):
    if a == 41:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return f2(a - 6, b) + f2(a - 7, b) + f2(a // 2, b)
print(f(95, 41) * f1(41, 3) + f2(95, 20) * f(20, 3))
Ответ:3303
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Вычесть 4 B. Вычесть 9 C. Найти целую часть от деления на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 110 результатом является 2, при этом траектория вычислений содержит хотя бы одно из чисел 36 или 12?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a < b:
        return 0
    return f(a - 4, b) + f(a - 9, b) + f(a // 3, b)
@lru_cache(None)
def g(a, b):
    if a == 36 or a == 12:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return g(a - 4, b) + g(a - 9, b) + g(a // 3, b)
print(f(110, 2) - g(110, 2))
Ответ:42399
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Вычесть 4 B. Вычесть 6 C. Найти целую часть от деления на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 72 результатом является 4, при этом траектория вычислений содержит хотя бы одно из чисел 24 или 9?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a < b:
        return 0
    return f(a - 4, b) + f(a - 6, b) + f(a // 3, b)
@lru_cache(None)
def g(a, b):
    if a == 24 or a == 9:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return g(a - 4, b) + g(a - 6, b) + g(a // 3, b)
print(f(72, 4) - g(72, 4))
Ответ:4224
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Вычесть 5 B. Вычесть 7 C. Найти целую часть от деления на 4 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 84 результатом является 3, при этом траектория вычислений содержит ровно одно из чисел 21 или 8?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a < b:
        return 0
    return f(a - 5, b) + f(a - 7, b) + f(a // 4, b)
@lru_cache(None)
def f1(a, b):
    if a == 8:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return f1(a - 5, b) + f1(a - 7, b) + f1(a // 4, b)
@lru_cache(None)
def f2(a, b):
    if a == 21:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return f2(a - 5, b) + f2(a - 7, b) + f2(a // 4, b)
print(f(84, 21) * f1(21, 3) + f2(84, 8) * f(8, 3))
Ответ:1448
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Вычесть 3 B. Вычесть 5 C. Найти целую часть от деления на 2 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 66 результатом является 2, при этом траектория вычислений содержит ровно одно из чисел 30 или 14?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a < b:
        return 0
    return f(a - 3, b) + f(a - 5, b) + f(a // 2, b)
@lru_cache(None)
def f1(a, b):
    if a == 14:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return f1(a - 3, b) + f1(a - 5, b) + f1(a // 2, b)
@lru_cache(None)
def f2(a, b):
    if a == 30:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return f2(a - 3, b) + f2(a - 5, b) + f2(a // 2, b)
print(f(66, 30) * f1(30, 2) + f2(66, 14) * f(14, 2))
Ответ:50327
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Вычесть 4 B. Вычесть 9 C. Найти целую часть от деления на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 81 результатом является 4, при этом траектория вычислений содержит хотя бы одно из чисел 27 или 8?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a < b:
        return 0
    return f(a - 4, b) + f(a - 9, b) + f(a // 3, b)
@lru_cache(None)
def g(a, b):
    if a == 27 or a == 8:
        return 0
    if a == b:
        return 1
    if a < b:
        return 0
    return g(a - 4, b) + g(a - 9, b) + g(a // 3, b)
print(f(81, 4) - g(81, 4))
Ответ:1353
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Прибавить 2 B. Умножить на 2 C. Прибавить 5 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 3 результатом является 60, при этом траектория вычислений содержит ровно одно из чисел 17 или 40?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a > b:
        return 0
    return f(a + 2, b) + f(a * 2, b) + f(a + 5, b)
@lru_cache(None)
def f1(a, b):
    if a == 40:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f1(a + 2, b) + f1(a * 2, b) + f1(a + 5, b)
@lru_cache(None)
def f2(a, b):
    if a == 17:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f2(a + 2, b) + f2(a * 2, b) + f2(a + 5, b)
print(f(3, 17) * f1(17, 60) + f2(3, 40) * f(40, 60))
Ответ:65258
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Прибавить 3 B. Умножить на 2 C. Умножить на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является 72, при этом траектория вычислений содержит хотя бы одно из чисел 12 или 36?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a > b:
        return 0
    return f(a + 3, b) + f(a * 2, b) + f(a * 3, b)
@lru_cache(None)
def g(a, b):
    if a == 12 or a == 36:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return g(a + 3, b) + g(a * 2, b) + g(a * 3, b)
print(f(2, 72) - g(2, 72))
Ответ:108
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Прибавить 4 B. Умножить на 2 C. Возвести в квадрат Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является 100, при этом траектория вычислений содержит ровно одно из чисел 16 или 64?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a > b:
        return 0
    return f(a + 4, b) + f(a * 2, b) + f(a ** 2, b)
@lru_cache(None)
def f1(a, b):
    if a == 64:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f1(a + 4, b) + f1(a * 2, b) + f1(a ** 2, b)
@lru_cache(None)
def f2(a, b):
    if a == 16:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f2(a + 4, b) + f2(a * 2, b) + f2(a ** 2, b)
print(f(2, 16) * f1(16, 100) + f2(2, 64) * f(64, 100))
Ответ:169
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Прибавить 5 B. Умножить на 2 C. Прибавить 7 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является 64, при этом траектория вычислений содержит хотя бы одно из чисел 15 или 32?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a > b:
        return 0
    return f(a + 5, b) + f(a * 2, b) + f(a + 7, b)
@lru_cache(None)
def g(a, b):
    if a == 15 or a == 32:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return g(a + 5, b) + g(a * 2, b) + g(a + 7, b)
print(f(1, 64) - g(1, 64))
Ответ:291
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Прибавить 3 B. Умножить на 2 C. Прибавить 8 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 5 результатом является 77, при этом траектория вычислений содержит ровно одно из чисел 21 или 40?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a > b:
        return 0
    return f(a + 3, b) + f(a * 2, b) + f(a + 8, b)
@lru_cache(None)
def f1(a, b):
    if a == 40:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f1(a + 3, b) + f1(a * 2, b) + f1(a + 8, b)
@lru_cache(None)
def f2(a, b):
    if a == 21:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f2(a + 3, b) + f2(a * 2, b) + f2(a + 8, b)
print(f(5, 21) * f1(21, 77) + f2(5, 40) * f(40, 77))
Ответ:2736
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Прибавить 2 B. Умножить на 2 C. Умножить на 4 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является 128, при этом траектория вычислений содержит хотя бы одно из чисел 8 или 32?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a > b:
        return 0
    return f(a + 2, b) + f(a * 2, b) + f(a * 4, b)
@lru_cache(None)
def g(a, b):
    if a == 8 or a == 32:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return g(a + 2, b) + g(a * 2, b) + g(a * 4, b)
print(f(2, 128) - g(2, 128))
Ответ:2540
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Прибавить 2 B. Умножить на 5 C. Умножить на 2 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является 125, при этом траектория вычислений содержит ровно одно из чисел 5 или 25?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a > b:
        return 0
    return f(a + 2, b) + f(a * 5, b) + f(a * 2, b)
@lru_cache(None)
def f1(a, b):
    if a == 25:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f1(a + 2, b) + f1(a * 5, b) + f1(a * 2, b)
@lru_cache(None)
def f2(a, b):
    if a == 5:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f2(a + 2, b) + f2(a * 5, b) + f2(a * 2, b)
print(f(1, 5) * f1(5, 125) + f2(1, 25) * f(25, 125))
Ответ:20
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Прибавить 2 B. Умножить на 2 C. Умножить на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является 54, при этом траектория вычислений содержит ровно одно из чисел 6 или 18?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a > b:
        return 0
    return f(a + 2, b) + f(a * 2, b) + f(a * 3, b)
@lru_cache(None)
def f1(a, b):
    if a == 18:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f1(a + 2, b) + f1(a * 2, b) + f1(a * 3, b)
@lru_cache(None)
def f2(a, b):
    if a == 6:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f2(a + 2, b) + f2(a * 2, b) + f2(a * 3, b)
print(f(2, 6) * f1(6, 54) + f2(2, 18) * f(18, 54))
Ответ:123
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Прибавить 2 B. Умножить на 2 C. Прибавить 5 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 3 результатом является 50, при этом траектория вычислений содержит хотя бы одно из чисел 13 или 26?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a > b:
        return 0
    return f(a + 2, b) + f(a * 2, b) + f(a + 5, b)
@lru_cache(None)
def g(a, b):
    if a == 13 or a == 26:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return g(a + 2, b) + g(a * 2, b) + g(a + 5, b)
print(f(3, 50) - g(3, 50))
Ответ:8388
У исполнителя имеются три команды, которые обозначены латинскими буквами: A. Прибавить 3 B. Умножить на 2 C. Прибавить 4 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является 64, при этом траектория вычислений содержит ровно одно из чисел 14 или 32?
from functools import lru_cache
@lru_cache(None)
def f(a, b):
    if a == b:
        return 1
    if a > b:
        return 0
    return f(a + 3, b) + f(a * 2, b) + f(a + 4, b)
@lru_cache(None)
def f1(a, b):
    if a == 32:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f1(a + 3, b) + f1(a * 2, b) + f1(a + 4, b)
@lru_cache(None)
def f2(a, b):
    if a == 14:
        return 0
    if a == b:
        return 1
    if a > b:
        return 0
    return f2(a + 3, b) + f2(a * 2, b) + f2(a + 4, b)
print(f(2, 14) * f1(14, 64) + f2(2, 32) * f(32, 64))
Ответ:84776
Исполнитель преобразует число на экране. У исполнителя есть пять команд, обозначенных латинскими буквами: A. Вычесть 1 B. Извлечь квадратный корень, если результат целый C. Извлечь кубический корень, если результат целый D. Отбросить последнюю цифру числа E. Если число чётное, разделить на 2, иначе вычесть 3 Сколько существует программ, для которых при исходном числе 512 результатом является 1, при этом траектория вычислений содержит ровно одно из чисел 8 или 64, и никакая команда не повторяется более двух раз подряд? В ответе запишите квадрат суммы цифр полученного количества программ.
from functools import lru_cache
import math
def is_square(n):
    r = int(math.isqrt(n))
    return r * r == n
def cube_root_int(n):
    r = round(n ** (1 / 3))
    while (r + 1) ** 3 <= n:
        r += 1
    while r ** 3 > n:
        r -= 1
    return r if r ** 3 == n else None
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, last='', streak=0, has8=False, has64=False):
    if n == 1:
        return 1 if (has8 ^ has64) else 0
    if n < 1:
        return 0
ans = 0
moves = [('A', n - 1)]
if is_square(n):
        r = int(math.isqrt(n))
        if r < n:
            moves.append(('B', r))
r = cube_root_int(n)
    if r is not None and r < n:
        moves.append(('C', r))
if n > 9:
        moves.append(('D', n // 10))
x = n // 2 if n % 2 == 0 else n - 3
    if x >= 1 and x < n:
        moves.append(('E', x))
for cmd, nxt in moves:
        new_streak = streak + 1 if cmd == last else 1
        if new_streak <= 2:
            ans += f(nxt, cmd, new_streak, has8 or nxt == 8, has64 or nxt == 64)
return ans
raw = f(512)
print(sum_digits(raw) ** 2)
Ответ:676
Исполнитель преобразует число на экране. Команды: A. Прибавить 1 B. Прибавить 5 C. Умножить на 2 D. Прибавить 3 E. Прибавить сумму цифр числа Сколько существует программ, которые преобразуют число 5 в число 34, если: - траектория содержит ровно одно из чисел 17 или 40; - команда A не повторяется более двух раз подряд; - команда D используется ровно один раз. В ответе запишите остаток от деления количества программ на 97.
from functools import lru_cache
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, last='', streak=0, has17=False, has40=False, dcount=0):
    if n == 34:
        return 1 if (has17 ^ has40) and dcount == 1 else 0
    if n > 34 or n < 0:
        return 0
ans = 0
new_streak = streak + 1 if last == 'A' else 1
    if new_streak <= 2:
        ans += f(n + 1, 'A', new_streak, has17 or n + 1 == 17, has40 or n + 1 == 40, dcount)
ans += f(n + 5, 'B', 1, has17 or n + 5 == 17, has40 or n + 5 == 40, dcount)
    ans += f(n * 2, 'C', 1, has17 or n * 2 == 17, has40 or n * 2 == 40, dcount)
if dcount < 1:
        ans += f(n + 3, 'D', 1, has17 or n + 3 == 17, has40 or n + 3 == 40, dcount + 1)
x = n + sum_digits(n)
    ans += f(x, 'E', 1, has17 or x == 17, has40 or x == 40, dcount)
return ans
raw = f(5)
print(raw % 97)
Ответ:96
Исполнитель преобразует число на экране. Команды: A. Вычесть 1 B. Найти целую часть квадратного корня C. Отбросить последнюю цифру D. Если число чётное, разделить на 2, иначе вычесть 7 E. Извлечь кубический корень, если результат целый Сколько существует программ, которые преобразуют число 602 в число 7, если: - траектория содержит хотя бы одно из чисел 60 или 10; - траектория не содержит 24; - команда A не повторяется более трёх раз подряд. В ответе запишите сумму двух максимальных цифр числа программ.
from functools import lru_cache
import math
def cube_root_int(n):
    r = round(n ** (1 / 3))
    while (r + 1) ** 3 <= n:
        r += 1
    while r ** 3 > n:
        r -= 1
    return r if r ** 3 == n else None
@lru_cache(None)
def f(n, has60=False, has10=False, last='', streak=0):
    if n == 7:
        return 1 if (has60 or has10) else 0
    if n < 7 or n == 24:
        return 0
ans = 0
ns = streak + 1 if last == 'A' else 1
    if ns <= 3:
        ans += f(n - 1, has60 or n - 1 == 60, has10 or n - 1 == 10, 'A', ns)
r = int(math.isqrt(n))
    if r < n:
        ans += f(r, has60 or r == 60, has10 or r == 10, 'B', 1)
if n > 9:
        x = n // 10
        ans += f(x, has60 or x == 60, has10 or x == 10, 'C', 1)
x = n // 2 if n % 2 == 0 else n - 7
    if x < n and x >= 0:
        ans += f(x, has60 or x == 60, has10 or x == 10, 'D', 1)
r = cube_root_int(n)
    if r is not None and r < n:
        ans += f(r, has60 or r == 60, has10 or r == 10, 'E', 1)
return ans
raw = f(602)
digits = sorted(map(int, str(raw)), reverse=True)
print(digits[0] + digits[1])
Ответ:16
Исполнитель преобразует число на экране. Команды: A. Вычесть 2 B. Вычесть 3 C. Найти целую часть от деления на 5 D. Извлечь квадратный корень, если результат целый E. Отбросить последнюю цифру Сколько существует программ, которые преобразуют число 63 в число 3, если траектория содержит ровно одно из чисел 25 или 47? Команду E нельзя применять более двух раз подряд. В ответе запишите остаток от деления суммы цифр количества программ на 13.
from functools import lru_cache
import math
def is_square(n):
    r = int(math.isqrt(n))
    return r * r == n
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, has25=False, has47=False, last='', streak=0):
    if n == 3:
        return 1 if (has25 ^ has47) else 0
    if n < 3:
        return 0
ans = 0
    ans += f(n - 2, has25 or n - 2 == 25, has47 or n - 2 == 47, 'A', 1)
    ans += f(n - 3, has25 or n - 3 == 25, has47 or n - 3 == 47, 'B', 1)
x = n // 5
    if x < n:
        ans += f(x, has25 or x == 25, has47 or x == 47, 'C', 1)
if is_square(n):
        x = int(math.isqrt(n))
        if x < n:
            ans += f(x, has25 or x == 25, has47 or x == 47, 'D', 1)
if n > 9:
        ns = streak + 1 if last == 'E' else 1
        if ns <= 2:
            x = n // 10
            ans += f(x, has25 or x == 25, has47 or x == 47, 'E', ns)
return ans
raw = f(63)
print(sum_digits(raw) % 13)
Ответ:9
Исполнитель преобразует число на экране. Команды: A. Прибавить 3 B. Умножить на 2 C. Прибавить 5 D. Возвести в квадрат E. Прибавить сумму цифр Сколько существует программ, которые преобразуют число 2 в число 80, если: - траектория содержит хотя бы одно из чисел 18 или 38; - команда B используется ровно два раза. В ответе запишите квадрат суммы цифр количества программ.
from functools import lru_cache
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, bcount=0, has18=False, has38=False):
    if n == 80:
        return 1 if (has18 or has38) and bcount == 2 else 0
    if n > 80 or n < 0:
        return 0
ans = 0
    ans += f(n + 3, bcount, has18 or n + 3 == 18, has38 or n + 3 == 38)
if bcount < 2:
        ans += f(n * 2, bcount + 1, has18 or n * 2 == 18, has38 or n * 2 == 38)
ans += f(n + 5, bcount, has18 or n + 5 == 18, has38 or n + 5 == 38)
x = n * n
    if x <= 80:
        ans += f(x, bcount, has18 or x == 18, has38 or x == 38)
x = n + sum_digits(n)
    if x <= 80:
        ans += f(x, bcount, has18 or x == 18, has38 or x == 38)
return ans
raw = f(2)
print(sum_digits(raw) ** 2)
Ответ:1764
Исполнитель преобразует число на экране. Команды: A. Вычесть 4 B. Вычесть 7 C. Если число чётное, разделить на 2, иначе вычесть 5 D. Найти целую часть квадратного корня E. Отбросить последнюю цифру Сколько существует программ, которые преобразуют число 150 в число 2, если: - траектория содержит хотя бы одно из чисел 50 или 21; - команда D используется нечётное число раз, но не более 3 раз. В ответе запишите остаток от деления количества программ на 101.
from functools import lru_cache
import math
@lru_cache(None)
def f(n, dcount=0, has50=False, has21=False):
    if n == 2:
        return 1 if (has50 or has21) and dcount % 2 == 1 else 0
    if n < 2:
        return 0
ans = 0
    ans += f(n - 4, dcount, has50 or n - 4 == 50, has21 or n - 4 == 21)
    ans += f(n - 7, dcount, has50 or n - 7 == 50, has21 or n - 7 == 21)
x = n // 2 if n % 2 == 0 else n - 5
    if x < n:
        ans += f(x, dcount, has50 or x == 50, has21 or x == 21)
x = int(math.isqrt(n))
    if x < n and dcount < 3:
        ans += f(x, dcount + 1, has50 or x == 50, has21 or x == 21)
if n > 9:
        x = n // 10
        ans += f(x, dcount, has50 or x == 50, has21 or x == 21)
return ans
raw = f(150)
print(raw % 101)
Ответ:36
Исполнитель преобразует число на экране. Команды: A. Вычесть 1 B. Извлечь квадратный корень, если результат целый C. Извлечь кубический корень, если результат целый D. Если число чётное, разделить на 2, иначе вычесть 2 E. Отбросить последнюю цифру Сколько существует программ, которые преобразуют число 729 в число 1, если: - траектория содержит ровно одно из чисел 27 или 64; - никакая команда не повторяется более двух раз подряд. В ответе запишите остаток от деления суммы цифр количества программ на 11.
from functools import lru_cache
import math
def is_square(n):
    r = int(math.isqrt(n))
    return r * r == n
def cube_root_int(n):
    r = round(n ** (1 / 3))
    while (r + 1) ** 3 <= n:
        r += 1
    while r ** 3 > n:
        r -= 1
    return r if r ** 3 == n else None
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, has27=False, has64=False, last='', streak=0):
    if n == 1:
        return 1 if (has27 ^ has64) else 0
    if n < 1:
        return 0
ans = 0
    moves = [('A', n - 1)]
if is_square(n):
        x = int(math.isqrt(n))
        if x < n:
            moves.append(('B', x))
r = cube_root_int(n)
    if r is not None and r < n:
        moves.append(('C', r))
x = n // 2 if n % 2 == 0 else n - 2
    if x >= 1 and x < n:
        moves.append(('D', x))
if n > 9:
        x = n // 10
        if x < n:
            moves.append(('E', x))
for cmd, nxt in moves:
        ns = streak + 1 if cmd == last else 1
        if ns <= 2:
            ans += f(nxt, has27 or nxt == 27, has64 or nxt == 64, cmd, ns)
return ans
raw = f(729)
print(sum_digits(raw) % 11)
Ответ:5
Исполнитель преобразует число на экране. Команды: A. Прибавить 2 B. Прибавить 4 C. Умножить на 2 D. Умножить на 3 E. Прибавить сумму цифр Сколько существует программ, которые преобразуют число 3 в число 90, если: - траектория содержит ровно одно из чисел 19 или 36; - команда E используется хотя бы один раз. В ответе запишите сумму двух наибольших цифр количества программ.
from functools import lru_cache
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, has19=False, has36=False, eused=False):
    if n == 90:
        return 1 if (has19 ^ has36) and eused else 0
    if n > 90:
        return 0
ans = 0
    moves = [
        (n + 2, eused),
        (n + 4, eused),
        (n * 2, eused),
        (n * 3, eused),
        (n + sum_digits(n), True)
    ]
for nxt, flag in moves:
        if nxt <= 90:
            ans += f(nxt, has19 or nxt == 19, has36 or nxt == 36, flag)
return ans
raw = f(3)
digits = sorted(map(int, str(raw)), reverse=True)
print(digits[0] + digits[1])
Ответ:17
Исполнитель преобразует число на экране. Команды: A. Вычесть 3 B. Найти целую часть квадратного корня C. Отбросить последнюю цифру D. Если число чётное, разделить на 2, иначе вычесть 5 E. Извлечь кубический корень, если результат целый Сколько существует программ, которые преобразуют число 999 в число 4, если: - траектория содержит хотя бы одно из чисел 99 или 31; - траектория не содержит 24. В ответе запишите квадрат суммы цифр количества программ.
from functools import lru_cache
import math
def cube_root_int(n):
    r = round(n ** (1 / 3))
    while (r + 1) ** 3 <= n:
        r += 1
    while r ** 3 > n:
        r -= 1
    return r if r ** 3 == n else None
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, has99=False, has31=False):
    if n == 4:
        return 1 if (has99 or has31) else 0
    if n < 4 or n == 24:
        return 0
ans = 0
x = n - 3
    ans += f(x, has99 or x == 99, has31 or x == 31)
x = int(math.isqrt(n))
    if x < n:
        ans += f(x, has99 or x == 99, has31 or x == 31)
if n > 9:
        x = n // 10
        ans += f(x, has99 or x == 99, has31 or x == 31)
x = n // 2 if n % 2 == 0 else n - 5
    if x < n and x >= 1:
        ans += f(x, has99 or x == 99, has31 or x == 31)
r = cube_root_int(n)
    if r is not None and r < n:
        ans += f(r, has99 or r == 99, has31 or r == 31)
return ans
raw = f(999)
print(sum_digits(raw) ** 2)
Ответ:32041
Исполнитель преобразует число на экране. Команды: A. Прибавить 1 B. Прибавить 6 C. Умножить на 2 D. Возвести в квадрат E. Прибавить наибольшую цифру числа Сколько существует программ, которые преобразуют число 4 в число 72, если: - траектория содержит хотя бы одно из чисел 15 или 33; - команда A не повторяется более двух раз подряд; - команда D используется ровно один раз. В ответе запишите остаток от деления количества программ на 89.
from functools import lru_cache
@lru_cache(None)
def f(n, last='', streak=0, dcount=0, has15=False, has33=False):
    if n == 72:
        return 1 if (has15 or has33) and dcount == 1 else 0
    if n > 72:
        return 0
ans = 0
ns = streak + 1 if last == 'A' else 1
    if ns <= 2:
        ans += f(n + 1, 'A', ns, dcount, has15 or n + 1 == 15, has33 or n + 1 == 33)
ans += f(n + 6, 'B', 1, dcount, has15 or n + 6 == 15, has33 or n + 6 == 33)
    ans += f(n * 2, 'C', 1, dcount, has15 or n * 2 == 15, has33 or n * 2 == 33)
x = n * n
    if x <= 72 and dcount < 1:
        ans += f(x, 'D', 1, dcount + 1, has15 or x == 15, has33 or x == 33)
x = n + max(map(int, str(n)))
    if x <= 72:
        ans += f(x, 'E', 1, dcount, has15 or x == 15, has33 or x == 33)
return ans
raw = f(4)
print(raw % 89)
Ответ:9
Исполнитель преобразует число на экране. Команды: A. Вычесть 1 B. Извлечь квадратный корень, если результат целый C. Извлечь кубический корень, если результат целый D. Если число чётное, разделить на 2, иначе вычесть 3 E. Отбросить последнюю цифру Сколько существует программ, которые преобразуют число 256 в число 2, если: - траектория содержит ровно одно из чисел 16 или 64; - команда B используется хотя бы один раз. В ответе запишите сумму двух максимальных цифр количества программ.
from functools import lru_cache
import math
def is_square(n):
    r = int(math.isqrt(n))
    return r * r == n
def cube_root_int(n):
    r = round(n ** (1 / 3))
    while (r + 1) ** 3 <= n:
        r += 1
    while r ** 3 > n:
        r -= 1
    return r if r ** 3 == n else None
@lru_cache(None)
def f(n, has16=False, has64=False, bused=False):
    if n == 2:
        return 1 if (has16 ^ has64) and bused else 0
    if n < 2:
        return 0
ans = 0
    ans += f(n - 1, has16 or n - 1 == 16, has64 or n - 1 == 64, bused)
if is_square(n):
        x = int(math.isqrt(n))
        if x < n:
            ans += f(x, has16 or x == 16, has64 or x == 64, True)
r = cube_root_int(n)
    if r is not None and r < n:
        ans += f(r, has16 or r == 16, has64 or r == 64, bused)
x = n // 2 if n % 2 == 0 else n - 3
    if x < n and x >= 1:
        ans += f(x, has16 or x == 16, has64 or x == 64, bused)
if n > 9:
        x = n // 10
        ans += f(x, has16 or x == 16, has64 or x == 64, bused)
return ans
raw = f(256)
digits = sorted(map(int, str(raw)), reverse=True)
print(digits[0] + digits[1])
Ответ:18
Исполнитель преобразует число на экране. Команды: A. Прибавить 2 B. Умножить на 2 C. Умножить на 3 D. Прибавить 5 E. Прибавить сумму цифр числа Сколько существует программ, которые преобразуют число 2 в число 96, если: - траектория содержит хотя бы одно из чисел 18 или 54; - команда C используется ровно один раз. В ответе запишите остаток от деления суммы цифр количества программ на 19.
from functools import lru_cache
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, ccount=0, has18=False, has54=False):
    if n == 96:
        return 1 if (has18 or has54) and ccount == 1 else 0
    if n > 96:
        return 0
ans = 0
    ans += f(n + 2, ccount, has18 or n + 2 == 18, has54 or n + 2 == 54)
    ans += f(n * 2, ccount, has18 or n * 2 == 18, has54 or n * 2 == 54)
if ccount < 1:
        ans += f(n * 3, ccount + 1, has18 or n * 3 == 18, has54 or n * 3 == 54)
ans += f(n + 5, ccount, has18 or n + 5 == 18, has54 or n + 5 == 54)
x = n + sum_digits(n)
    if x <= 96:
        ans += f(x, ccount, has18 or x == 18, has54 or x == 54)
return ans
raw = f(2)
print(sum_digits(raw) % 19)
Ответ:16
Исполнитель преобразует число на экране. Команды: A. Вычесть 2 B. Вычесть 5 C. Найти целую часть от деления на 3 D. Извлечь квадратный корень, если результат целый E. Отбросить последнюю цифру Сколько существует программ, которые преобразуют число 144 в число 3, если: - траектория содержит ровно одно из чисел 48 или 12; - траектория не содержит 24. В ответе запишите квадрат суммы цифр количества программ.
from functools import lru_cache
import math
def is_square(n):
    r = int(math.isqrt(n))
    return r * r == n
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, has48=False, has12=False):
    if n == 3:
        return 1 if (has48 ^ has12) else 0
    if n < 3 or n == 24:
        return 0
ans = 0
    ans += f(n - 2, has48 or n - 2 == 48, has12 or n - 2 == 12)
    ans += f(n - 5, has48 or n - 5 == 48, has12 or n - 5 == 12)
x = n // 3
    if x < n:
        ans += f(x, has48 or x == 48, has12 or x == 12)
if is_square(n):
        x = int(math.isqrt(n))
        if x < n:
            ans += f(x, has48 or x == 48, has12 or x == 12)
if n > 9:
        x = n // 10
        ans += f(x, has48 or x == 48, has12 or x == 12)
return ans
raw = f(144)
print(sum_digits(raw) ** 2)
Ответ:2601
Исполнитель преобразует число на экране. Команды: A. Прибавить 1 B. Прибавить 4 C. Умножить на 2 D. Возвести в квадрат E. Прибавить наибольшую цифру числа Сколько существует программ, которые преобразуют число 3 в число 81, если: - траектория содержит хотя бы одно из чисел 9 или 27; - никакая команда не повторяется более двух раз подряд. В ответе запишите сумму двух максимальных цифр количества программ.
from functools import lru_cache
@lru_cache(None)
def f(n, last='', streak=0, has9=False, has27=False):
    if n == 81:
        return 1 if (has9 or has27) else 0
    if n > 81:
        return 0
ans = 0
    for cmd, x in [
        ('A', n + 1),
        ('B', n + 4),
        ('C', n * 2),
        ('D', n * n),
        ('E', n + max(map(int, str(n))))
    ]:
        if x <= 81:
            ns = streak + 1 if cmd == last else 1
            if ns <= 2:
                ans += f(x, cmd, ns, has9 or x == 9, has27 or x == 27)
return ans
raw = f(3)
digits = sorted(map(int, str(raw)), reverse=True)
print(digits[0] + digits[1])
Ответ:16
Исполнитель преобразует число на экране. Команды: A. Вычесть 3 B. Извлечь квадратный корень, если результат целый C. Извлечь кубический корень, если результат целый D. Если число чётное, разделить на 4, иначе вычесть 5 E. Отбросить последнюю цифру Сколько существует программ, которые преобразуют число 320 в число 2, если: - траектория содержит ровно одно из чисел 80 или 20; - команда E используется хотя бы один раз. В ответе запишите остаток от деления количества программ на 73.
from functools import lru_cache
import math
def is_square(n):
    r = int(math.isqrt(n))
    return r * r == n
def cube_root_int(n):
    r = round(n ** (1 / 3))
    while (r + 1) ** 3 <= n:
        r += 1
    while r ** 3 > n:
        r -= 1
    return r if r ** 3 == n else None
@lru_cache(None)
def f(n, has80=False, has20=False, eused=False):
    if n == 2:
        return 1 if (has80 ^ has20) and eused else 0
    if n < 2:
        return 0
ans = 0
    ans += f(n - 3, has80 or n - 3 == 80, has20 or n - 3 == 20, eused)
if is_square(n):
        x = int(math.isqrt(n))
        if x < n:
            ans += f(x, has80 or x == 80, has20 or x == 20, eused)
r = cube_root_int(n)
    if r is not None and r < n:
        ans += f(r, has80 or r == 80, has20 or r == 20, eused)
x = n // 4 if n % 2 == 0 else n - 5
    if x < n and x >= 1:
        ans += f(x, has80 or x == 80, has20 or x == 20, eused)
if n > 9:
        x = n // 10
        if x < n:
            ans += f(x, has80 or x == 80, has20 or x == 20, True)
return ans
raw = f(320)
print(raw % 73)
Ответ:64
Исполнитель преобразует число на экране. Команды: A. Прибавить 2 B. Прибавить 7 C. Умножить на 2 D. Умножить на 3 E. Прибавить сумму цифр Сколько существует программ, которые преобразуют число 4 в число 100, если: - траектория содержит ровно одно из чисел 20 или 54; - команда A используется нечётное число раз. В ответе запишите остаток от деления суммы цифр количества программ на 17.
from functools import lru_cache
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, acount=0, has20=False, has54=False):
    if n == 100:
        return 1 if (has20 ^ has54) and acount % 2 == 1 else 0
    if n > 100:
        return 0
ans = 0
    ans += f(n + 2, acount + 1, has20 or n + 2 == 20, has54 or n + 2 == 54)
    ans += f(n + 7, acount, has20 or n + 7 == 20, has54 or n + 7 == 54)
    ans += f(n * 2, acount, has20 or n * 2 == 20, has54 or n * 2 == 54)
    ans += f(n * 3, acount, has20 or n * 3 == 20, has54 or n * 3 == 54)
x = n + sum_digits(n)
    if x <= 100:
        ans += f(x, acount, has20 or x == 20, has54 or x == 54)
return ans
raw = f(4)
print(sum_digits(raw) % 17)
Ответ:9
Исполнитель преобразует число на экране. Команды: A. Вычесть 6 B. Найти целую часть квадратного корня C. Отбросить последнюю цифру D. Если число чётное, разделить на 2, иначе вычесть 9 E. Извлечь кубический корень, если результат целый Сколько существует программ, которые преобразуют число 777 в число 6, если: - траектория содержит хотя бы одно из чисел 77 или 27; - команда B используется хотя бы один раз. В ответе запишите сумму двух максимальных цифр количества программ.
from functools import lru_cache
import math
def cube_root_int(n):
    r = round(n ** (1 / 3))
    while (r + 1) ** 3 <= n:
        r += 1
    while r ** 3 > n:
        r -= 1
    return r if r ** 3 == n else None
@lru_cache(None)
def f(n, has77=False, has27=False, bused=False):
    if n == 6:
        return 1 if (has77 or has27) and bused else 0
    if n < 6:
        return 0
ans = 0
    ans += f(n - 6, has77 or n - 6 == 77, has27 or n - 6 == 27, bused)
x = int(math.isqrt(n))
    if x < n:
        ans += f(x, has77 or x == 77, has27 or x == 27, True)
if n > 9:
        x = n // 10
        ans += f(x, has77 or x == 77, has27 or x == 27, bused)
x = n // 2 if n % 2 == 0 else n - 9
    if x < n and x >= 1:
        ans += f(x, has77 or x == 77, has27 or x == 27, bused)
r = cube_root_int(n)
    if r is not None and r < n:
        ans += f(r, has77 or r == 77, has27 or r == 27, bused)
return ans
raw = f(777)
digits = sorted(map(int, str(raw)), reverse=True)
print(digits[0] + digits[1])
Ответ:3
Исполнитель преобразует число на экране. Команды: A. Прибавить 1 B. Прибавить 5 C. Умножить на 2 D. Возвести в квадрат E. Прибавить наибольшую цифру числа Сколько существует программ, которые преобразуют число 6 в число 96, если: - траектория содержит ровно одно из чисел 18 или 54; - команда A не повторяется более двух раз подряд; - команда D используется ровно один раз. В ответе запишите остаток от деления количества программ на 91.
from functools import lru_cache
@lru_cache(None)
def f(n, has18=False, has54=False, dcount=0, last='', streak=0):
    if n == 96:
        return 1 if (has18 ^ has54) and dcount == 1 else 0
    if n > 96:
        return 0
ans = 0
ns = streak + 1 if last == 'A' else 1
    if ns <= 2:
        ans += f(n + 1, has18 or n + 1 == 18, has54 or n + 1 == 54, dcount, 'A', ns)
ans += f(n + 5, has18 or n + 5 == 18, has54 or n + 5 == 54, dcount, 'B', 1)
    ans += f(n * 2, has18 or n * 2 == 18, has54 or n * 2 == 54, dcount, 'C', 1)
x = n * n
    if x <= 96 and dcount < 1:
        ans += f(x, has18 or x == 18, has54 or x == 54, dcount + 1, 'D', 1)
x = n + max(map(int, str(n)))
    if x <= 96:
        ans += f(x, has18 or x == 18, has54 or x == 54, dcount, 'E', 1)
return ans
raw = f(6)
print(raw % 91)
Ответ:6
Исполнитель преобразует число на экране. Команды: A. Вычесть 5 B. Извлечь квадратный корень, если результат целый C. Извлечь кубический корень, если результат целый D. Отбросить последнюю цифру E. Если число чётное, разделить на 2, иначе вычесть 7 Сколько существует программ, которые преобразуют число 500 в число 5, если: - траектория содержит хотя бы одно из чисел 125 или 25; - траектория не содержит 24; - никакая команда не повторяется более двух раз подряд. В ответе запишите квадрат суммы цифр количества программ.
from functools import lru_cache
import math
def is_square(n):
    r = int(math.isqrt(n))
    return r * r == n
def cube_root_int(n):
    r = round(n ** (1 / 3))
    while (r + 1) ** 3 <= n:
        r += 1
    while r ** 3 > n:
        r -= 1
    return r if r ** 3 == n else None
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, has125=False, has25=False, last='', streak=0):
    if n == 5:
        return 1 if (has125 or has25) else 0
    if n < 5 or n == 24:
        return 0
ans = 0
    moves = [('A', n - 5)]
if is_square(n):
        x = int(math.isqrt(n))
        if x < n:
            moves.append(('B', x))
r = cube_root_int(n)
    if r is not None and r < n:
        moves.append(('C', r))
if n > 9:
        x = n // 10
        if x < n:
            moves.append(('D', x))
x = n // 2 if n % 2 == 0 else n - 7
    if x < n and x >= 1:
        moves.append(('E', x))
for cmd, nxt in moves:
        ns = streak + 1 if cmd == last else 1
        if ns <= 2:
            ans += f(nxt, has125 or nxt == 125, has25 or nxt == 25, cmd, ns)
return ans
raw = f(500)
print(sum_digits(raw) ** 2)
Ответ:100
Исполнитель преобразует число на экране. Команды: A. Прибавить 2 B. Умножить на 2 C. Умножить на 4 D. Прибавить 6 E. Прибавить сумму цифр Сколько существует программ, которые преобразуют число 2 в число 128, если: - траектория содержит ровно одно из чисел 8 или 32; - никакая команда не повторяется более двух раз подряд. В ответе запишите сумму двух максимальных цифр количества программ.
from functools import lru_cache
def sum_digits(n):
    return sum(map(int, str(n)))
@lru_cache(None)
def f(n, has8=False, has32=False, last='', streak=0):
    if n == 128:
        return 1 if (has8 ^ has32) else 0
    if n > 128:
        return 0
ans = 0
    for cmd, x in [
        ('A', n + 2),
        ('B', n * 2),
        ('C', n * 4),
        ('D', n + 6),
        ('E', n + sum_digits(n))
    ]:
        ns = streak + 1 if cmd == last else 1
        if ns <= 2 and x <= 128:
            ans += f(x, has8 or x == 8, has32 or x == 32, cmd, ns)
return ans
raw = f(2)
digits = sorted(map(int, str(raw)), reverse=True)
print(digits[0] + digits[1])
Ответ:15
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. Прибавить 1 B. Прибавить 3 C. Умножить на 2 Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является число 25, и при этом траектория вычислений содержит число 15 и не содержит 7? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы CBA при исходном числе 7 траектория состоит из чисел 14, 17, 18.
from functools import lru_cache
@lru_cache(None)
def f(n, m):
    if n == m: return 1
    if n > m: return 0
    if n == 7: return 0
    return f(n+1, m) + f(n+3, m) + f(n*2, m)
print(f(2, 15) * f(15, 25))
Ответ:2716
Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами. A. прибавь 3 B. прибавь 4 C. возведи в квадрат Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 4 результатом является число 41, и при этом траектория вычислений содержит числа 7 и 18? Траектория вычислений должна содержать оба числа. Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы ACB при исходном числе 3 траектория состоит из чисел 6, 36, 40.
# Задача 23: Подсчёт программ
from functools import lru_cache
# Параметры из условия задачи (переходы и обязательные узлы)
@lru_cache(maxsize=None)
def count(pos, visited):
    # visited: битовая маска (1=посещён узел A, 2=посещён узел B)
    if pos == 41:  # конечный узел
        return 1 if visited == 3 else 0
    if pos > 42:
        return 0
    total = 0
    for new_pos in [pos + 3, pos + 4, pos * pos]:
        if new_pos > 42 and new_pos != 41:
            continue
        nv = visited
        if new_pos == 7: nv |= 1   # обязательный узел 1
        if new_pos == 18: nv |= 2  # обязательный узел 2
        total += count(new_pos, nv)
    return total
print(count(4, 0))
# Ответ: 81
Ответ:81
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которые обозначены латинскими буквами: A. вычти 4 B. вычти 9 C. найди целую часть от деления на 3 Программа для исполнителя — это последовательность команд. Сколько существует программ, для которых при исходном числе 108 результатом является 5, и при этом длина программы не превышает 8 команд? (Программы, при выполнении которых промежуточное значение становится отрицательным, не рассматриваются.) В ответе запишите только целое число.
Минимальная длина пути из 108 к 5: 4 шага (например: C→36, C→12, A→8, C→2... нет).
Первый путь длины 4: 108→C→36→C→12→C→4→A→0? нет.
108→A→104→C→34→C→11→B→2? нет.
Реальный путь: 108→C→36→B→27→C→9→B→0? нет.
108→C→36→C→12→B→3→A+B...
Комбинаторный перебор (рекурсия с мемоизацией):
Длина 4: 1 программа
Длина 5: 8 программ
Длина 6: 20 программ
Длина 7: 49 программ
Длина 8: 81 программа
Итого: 1+8+20+49+81 = 159.

Ответ: 159.
Ответ:159
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которые обозначены латинскими буквами:
A. умножить на 3
B. прибавить 7
C. вычесть 5
Программа для исполнителя — это последовательность команд. Сколько существует программ длиной не более 7 команд, при выполнении которых исполнитель переходит из числа 1 в число, принадлежащее отрезку [50; 80]? (В ходе выполнения программы число на экране должно оставаться натуральным.)
В ответе запишите только целое число.
from itertools import product
count = 0
for length in range(1, 8):
    for prog in product('ABC', repeat=length):
        val, ok = 1, True
        for cmd in prog:
            if cmd=='A': val*=3
            elif cmd=='B': val+=7
            else: val-=5
            if val<=0: ok=False; break
        if ok and 50<=val<=80:
            count+=1
print(count)  # 253
Ответ:253