Сегодня я пошел на математическое соревнование, и возник вопрос, который был примерно таким:
У вас есть номер
n, теперь вам нужно рассчитать, какой самый короткий маршрут для этого числа, но есть правила.
- Вы начинаете с номера
1- Вы заканчиваете, когда вы достигаете
n- Вы можете перейти на
nлибо удвоить свой предыдущий номер, либо добавить два предыдущих номера.Пример:
n = 25Самый медленный маршрут:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25(Вы просто добавляете1)Самый быстрый маршрут:
1,2,4,8,16,24,25, сложность = 6Пример:
n = 8Самый быстрый маршрут:1,2,4,8, сложность = 3Пример:
n = 15Самый быстрый маршрут:1,2,3,6,9,15, сложность = 5
Как создать программу, которая может рассчитать сложность заданного числа n (с помощью n <= 32)?
Я уже знаю, что для любого заданного числа n (n <= 32) сложность ниже, чем 1.45 x 2log (n). Поэтому теперь мне нужно всего вычислить все маршруты со сложностью ниже 1,45 x 2log (n), а сравнить их и посмотреть, какой из них является самым быстрым "маршрутом". Но я понятия не имею, как поместить все маршруты и все это в python, потому что количество маршрутов изменяется, когда число n изменяется.
Это то, что у меня есть сейчас:
number = raw_input('Enter your number here : ')
startnumber = 1
complexity = 0
while startnumber <= number