Задание 23. Информатика. Статград 2023-1-1
- Просмотры: 99
- Изменено: 23 ноября 2024
Исполнитель преобразует число на экране.
У исполнителя есть две команды, которым присвоены номера:
Первая команда увеличивает число на экране на \(1\), вторая умножает его на \(2\).
Программа для исполнителя — это последовательность команд. Например, если в начальный момент на экране находится число \(1\), то программа \(212\) последовательно преобразует его в \(2\), \(3\), \(6\).
Сколько существует программ, для которых преобразуют исходное число \(1\) в число \(40\) так, что в процессе выполнения на экране ни разу не появляется цифра \(3\)?
Решение:
Python
def f(n, target):
if n == target:
return 1
if n > target or '3' in str(n):
return 0
return f(n+1, target) + f(2*n, target)
print(f(1, 40))
Ответ: \(16\)