5 номер. Преобразование записей чисел
Инверсия двоичных разрядов
Автомат обрабатывает двузначное десятичное натуральное число N по следующему алгоритму.
1. Строится двоично-десятичное представление – каждый разряд десятичного числа кодируется с помощью 4 бит, затем полученные коды записываются друг за другом с сохранением незначащих нулей.
2. Полученная двоичная последовательность инвертируется – все нули меняются на единиц, все единицы на нули.
3. Полученное в результате этих операций двоичное число переводится в десятичную систему счисления.
Пример.
Дано число 13.
13₁₀ → 00010011₂ → 11101100₂ → 236₁₀
Укажите N после обработки которого результатом выполнения алгоритма будет число 151.
Подсказка
Сначала выполните все шаги для одного N, сохраняя строку после каждого изменения. Затем уточните, что требуется выбрать: N, R или количество значений.
Решение
Искомая величина: Укажите N после обработки которого результатом выполнения алгоритма будет число 151.
Разделите решение на два действия: для одного входного числа точно воспроизведите алгоритм, затем отберите результаты по условию задачи. Храните запись числа строкой; основание используемой системы счисления — 2.
Инверсия меняет каждый 0 на 1 и каждый 1 на 0. Меняйте только разряды указанной в условии записи, сохраняя её длину; дополнительные ведущие разряды можно вводить только тогда, когда они явно предусмотрены алгоритмом.
После завершения всех преобразований получите числовой результат: R = int(s, 2). Ограничения на величину R проверяйте численно: лексикографический порядок строк не совпадает с порядком чисел.
Отбирайте ту величину, о которой спрашивается в последнем предложении: исходное число и результат алгоритма нельзя подменять друг другом. Для наименьшего входа рассматривайте допустимые N по возрастанию; для наибольшего проверяйте весь обоснованный диапазон.
Строгое «больше» означает >, а «не меньше» — >=; аналогично различайте верхние границы. Диапазон перебора определяйте из ограничений и изменения длины записи, а не произвольной константой. Пример из условия помогает проверить отдельный проход алгоритма.
Ответ: 68.