Исполнитель преобразует число на экране с помощью двух команд.
- A. Прибавь 1. Увеличивает число на 1.
- B. Допиши сумму. Дописывает справа сумму цифр числа. Команду можно выполнить, только если сумма цифр меньше 10.
Программа для исполнителя состоит из последовательности команд. Траектория вычислений состоит из результатов выполнения всех команд программы. Например, для программы AAB при исходном числе 3 траектория состоит из чисел 4, 5, 55.
Сколько существует программ, которые преобразуют число 67 в число 228?
Решение:
def count_programs(current, target):
if current == target:
return 1
if current > target:
return 0
# Программы, которые начинаются с команды A
count = count_programs(current + 1, target)
# Программы, которые начинаются с команды B
digit_sum = sum(int(digit) for digit in str(current))
if digit_sum < 10:
count += count_programs(current * 10 + digit_sum, target)
return count
print(count_programs(67, 228))
Ответ: 1
Ответ:
1