• Предмет: Информатика
  • Автор: vanisherxxx
  • Вопрос задан 2 года назад

Напишите программу на Python'е для решения следующей задачи:

Исполнитель НечетМ преобразует число на экране. У исполнителя НечетМ две команды, которым присвоены номера:


1. прибавь 1

2. сделай нечётное



Первая из этих команд увеличивает число x на экране на 1, вторая переводит число x в число 2x+1. Например, вторая команда переводит число 10 в число 21. Программа для исполнителя НечетМ – это последовательность команд. Сколько существует таких программ, которые число 1 преобразуют в число 27, причём траектория вычислений не содержит число 26? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 17, 18.


damskiyugodnik43: не копировал я с решу егэ
damskiyugodnik43: это тоже самое что дать задачу, и если у человека получился правильный ответ, то сказать: "ого, у тебя ответ совпал с ответом составителя, значит ты списал"
damskiyugodnik43: логика - железо
damskiyugodnik43: и вообще ты, что, один цикл на питоне написать не можешь?
vanisherxxx: damskiyugodnik43, существует много способов решить данное задание, но почему же алгоритм схож с решу егэ, да и вообще, я просил полную программу, а не лишь куски.
Аноним: посмотри на его ник
damskiyugodnik43: знаю только два ЭФФЕКТИВНЫХ способа: динамика и рекурсия(что в принципе тоже самое), в шкиле всегда дают первый вариант, поэтому его я и ресурсы по подготовке и описывают
vanisherxxx: damskiyugodnik43, диалог с вами я считаю бесполезным.
damskiyugodnik43: полезно только всех, у кого правильные мысли обвинять в списывании, ок, понял
vanisherxxx: damskiyugodnik43, о списывании речь не шла.

Ответы

Ответ дал: Аноним
2

a = 1

res = 0

def pr(x, mas):

   if x == 27:

       global res

       res+=1

   elif x<27:

       if x+1 !=26:

           pr(x+1, mas+[x+1])

       if 2*x+1 != 26:

           pr(2*x+1, mas+[2*x+1])

pr(1, [1])

print(res)


vanisherxxx: Меньше г-кода
Аноним: от уменьшения количества г-кода, его качество не увеличивается
Аноним: возьми место 27 число 10000 и посмотри по времени работы
Аноним: a = 1
res = 0
def pr(x):
if x == 10000:
global res
res+=1
elif x<27:
if x+1 !=26:
pr(x+1)
if 2*x+1 != 26:
pr(2*x+1)
pr(1)
print(res)
Аноним: def F(x, y):
if x == y: return 1
if x > y or x == 26: return 0
return F(x+1, y) + F(2*x+1, y)
print(F(1, 10000))
Аноним: затести время работы
vanisherxxx: Моя программа отличается от твоей простотой, как говорится, что видишь, то и пишешь, никто такое большое значение давать не будет на экзамене, даже, если даст, можно поставить мою программу, пусть грузится, и перейти к другому заданию
vanisherxxx: Но я не против твоего решения, как вариант можно, но я нашёл то что для меня проще
Аноним: она как раз простотой и не отличается, она красивее, но и не более того, как была г-кодом так и остался
vanisherxxx: И не поспоришь
Вас заинтересует