Предмет: Информатика, автор: Obernikhin

Исполнитель Калькулятор преобразует число на экране. У исполнителя есть две команды, которым присвоены
номера:
1. Прибавить 1
2. Умножить на 4
Программа для исполнителя Калькулятор - это последовательность команд. Сколько существует программ, для
которых при исходном числе 2 результатом работы является число 80, и при этом траектория вычислений
содержит число 10 и не содержит число 30?

Ответы

Автор ответа: MrSolution
0

Программа:

k = 0

def cnt(start, finish, miss):

   if finish < start or finish == miss:

       return 0

   elif finish == start:

       return 1

   else:

       global k

       k = cnt(start, finish - 1, miss)

       if finish % 4 == 0:

           k += cnt(start, finish / 4, miss)

       return k

print(cnt(2, 10, 30) * cnt(10, 80, 30))

Результат работы программы:

22


MrSolution: Можно и руками решить, но здесь код простой.
Obernikhin: Разве k не должно равняться 2?
MrSolution: Аргументируйте
Obernikhin: Начальное число 2, а не 0
Obernikhin: По условию, возможно я не прав, но из программы я вижу, что начинается с нуля
MrSolution: Не понял? Мы в к считаем, причем тут начало? Я cnt(start = 2... вызываю, все нормально.
Obernikhin: А, понял, прошу прощения
Obernikhin: Спасибо за ответ
MrSolution: :)
Похожие вопросы
Предмет: Математика, автор: diana9219