5 номер. Преобразование записей чисел
Преобразование двоичной записи
(А. Калинин) Написав секретное письмо Снегурочке, Дед Мороз уложил его конверт и принялся писать адрес, но никак не может вспомнить свой почтовый индекс. Он помнит, что предпоследняя цифра индекса – «9», а также, что в нём содержится цифра 2. Выясните, что это за индекс, если известно, что это наименьшее подходящее шестизначное число, поступающее в описанный ниже алгоритм, результатом которого является число «1519»
1. Попарно складываются первая и вторая цифры, третья и четвёртая, пятая и шестая, и результаты последовательно записываются друг за другом.
2. Строится двоичная запись полученного числа.
3. К полученной двоичной записи приписывается ещё один разряд по правилу:
а) Если число чётное, то приписывается 0
б) Если число нечётное, то приписывается 1
4. Полученное число переводится в десятичную систему счисления.
Подсказка
Сначала выполните все шаги для одного N, сохраняя строку после каждого изменения. Затем уточните, что требуется выбрать: N, R или количество значений.
Решение
Разделите решение на два действия: для одного входного числа точно воспроизведите алгоритм, затем отберите результаты по условию задачи. Храните запись числа строкой; основание используемой системы счисления — 2.
После завершения всех преобразований получите числовой результат: R = int(s, 2). Ограничения на величину R проверяйте численно: лексикографический порядок строк не совпадает с порядком чисел.
Отбирайте ту величину, о которой спрашивается в последнем предложении: исходное число и результат алгоритма нельзя подменять друг другом. Для наименьшего входа рассматривайте допустимые N по возрастанию; для наибольшего проверяйте весь обоснованный диапазон.
Строгое «больше» означает >, а «не меньше» — >=; аналогично различайте верхние границы. Диапазон перебора определяйте из ограничений и изменения длины записи, а не произвольной константой. Пример из условия помогает проверить отдельный проход алгоритма.
Ответ: 162390.