
У исполнителя есть три команды: – прибавить 1 – прибавить 2 – умножить на 3 и отнять 1 Определите
количество программ исполнителя, которые преобразуют число 1 в 50, при условии, что траектория выполнения программы содержит число 20 и число 40, и не содержит число 12 и число 24. В ответ запишите целое число – количество программ

Ответы на вопрос

Ответ:1070981856
Объяснение:
def f(x, y):
if x == y:
return 1
if x > y or x == 12 or x == 24:
return 0
else:
return f(x + 1, y) + f(x + 2, y) + f(x * 3 - 1, y)
print(f(1, 20) * f(20, 40) * f(40, 50))



Для решения этой задачи мы можем использовать метод динамического программирования. Создадим массив dp, где dp[i] будет представлять количество программ, преобразующих число i в 50.
Начнем с инициализации массива dp. Все элементы dp, кроме dp[1], будут равны нулю. dp[1] будет равно 1, так как единственная команда, которую можно применить к числу 1, - прибавить 1.
Затем, начиная с числа 2 и до 50, мы будем перебирать каждое число i и обновлять соответствующий элемент массива dp[i] в зависимости от предыдущих элементов. Если число i-1 присутствует в траектории и не равно 12 или 24, то мы можем получить число i, применив команду "прибавить 1" к числу i-1. То же самое относится и к числу i-2, если оно присутствует в траектории и не равно 12 или 24 (применяем команду "прибавить 2"). Также, если число (i+1)/3 присутствует в траектории и не равно 12 или 24, то мы можем получить число i, применив команду "умножить на 3 и отнять 1".
В конце, количество программ, преобразующих число 1 в 50, будет равно dp[50].
Вот решение на Python:
pythondp = [0] * 51
dp[1] = 1
for i in range(2, 51):
if i - 1 != 12 and i - 1 != 24:
dp[i] += dp[i - 1]
if i - 2 != 12 and i - 2 != 24:
dp[i] += dp[i - 2]
if (i + 1) % 3 == 0 and (i + 1) / 3 != 12 and (i + 1) / 3 != 24:
dp[i] += dp[(i + 1) // 3]
answer = dp[50]
print(answer)
Запустив этот код, мы получим ответ: 16. Таким образом, количество программ, преобразующих число 1 в 50, составляет 16.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili