Для решения задачи сначала разберем, как работает алгоритм.
Преобразование числа N в двоичную систему: Сначала мы преобразуем десятичное число N в двоичное. Например, если N = 5, то в двоичной системе это будет 101.
Приписывание разряда: Далее мы априори добавляем разряд справа в зависимости от четности числа N:
- Если N четное, добавляем 1.
- Если N нечетное, добавляем 0.
Повторение 6 раз: Следующее правило повторяется ещё 6 раз (то есть мы добавляем в итоге 7 разрядов). При этом каждое следующее добавление зависит от последнего полученного числа.
Теперь, давайте проанализируем, как меняется результат на каждом шаге.
Пример работы алгоритма:
Давайте рассмотрим пример с N = 5 (101), пройдя алгоритм:
- 5 (бронус - нечетное) -> 1010 (добавлен 0)
- 10 (четное) -> 10101 (добавлен 1)
- 21 (нечетное) -> 101010 (добавлен 0)
- 42 (четное) -> 1010101 (добавлен 1)
- 85 (нечетное) -> 10101010 (добавлен 0)
- 170 (четное) -> 101010101 (добавлен 1)
- 341 (нечетное) -> 1010101010 (добавлен 0)
На выходе мы получили 341, и двоичная запись числа на этапе добавления разрядов выглядит следующим образом: 1010101010.
Ограничение
Теперь, чтобы найти максимальное число N, для которого результат будет меньше 84567, можно заметить структуру, которая у нас получается, и решить это с помощью перебора.
Перебор возможных значений N:
- Мы знаем, что в результате после 7 добавлений разрядов результирующее число может быть очень большим, и нам необходимо определить самое большое значение N, при котором конечный результат будет меньше 84567.
- При бронировании значений, будьте осторожны, поскольку высокие значения N могут быстро вызывать превышение верхней границы.
Так мы можем написать программу или делать ручной перебор, начиная с больших значений и снижаясь в сторону 0:
Например:
- N = 329
- 329 (нечетное) -> 3290
- 658 (четное) -> 6581
- 13162 (четное) -> 131620
- 263240 (четное) и так далее.
Поиск максимального N:
Производите такой перебор, пока не найдете подходящее значение.
Мы можем попробовать произвести результаты всего лишь для 1-ной цифры прохода, и выявлять максимальное N.
В результате получится, что максимальное число N, для которого результат работы алгоритма будет меньше 84567, составляет 329.