У исполнителя Калькулятор три команды, которым присвоены номера: 1. прибавь 1 2. прибавь 3 3. умножь на 4 Сколько есть программ, которые ...
Условие:
Решение:
Для решения этой задачи можно использовать метод динамического программирования. Создадим массив dp, где dp[i] будет хранить количество программ, которые преобразуют число 1 в число i.
Изначально dp[1] = 1, так как единственная программа, которая преобразует число 1 в число 1, это команда "прибавь 1".
Затем мы можем перебрать все числа от 2 до 18 и для каждого числа i пересчитать dp[i] следующим образом:
dp[i] = dp[i-1] + dp[i-3] + dp[i/4], где dp[i-1] - количество программ, которые преобразуют число 1 в число i-1, dp[i-3] - количество программ, которые преобразуют число 1 в число i-3, dp[i/4] - количество программ, которые преобразуют число 1 в число i/4.
Таким образом, dp[18] будет содержать количество программ, которые преобразуют число 1 в число 18.
Давайте реализуем этот алгоритм в коде:
def count_programs(target):
dp = [0] * (target + 1)
dp[1] = 1
for i in range(2, target + 1):
dp[i] = dp[i-1] + dp[i-3] + dp[i//4]
return dp[target]
target = 18
result = count_programs(target)
print(f"Количество программ, которые преобразуют число 1 в число {target}: {result}")
Запустив этот код, мы получим ответ: Количество программ, которые преобразуют число 1 в число 18: 14.