Введение (может быть проигнорировано)
Размещать все положительные числа в обычном порядке (1, 2, 3, ...) немного скучно, не правда ли? Итак, вот серия проблем, связанных с перестановками (перестановками) всех положительных чисел. Это второй вызов в этой серии. Первый вызов можно найти здесь .
В этом вызове мы используем коды Грея, чтобы переставить натуральные числа. Код Грея или «отраженный двоичный код» - это двоичное кодирование таким образом, что два последовательных значения отличаются только одним битом. Практическое применение этого кодирования - использовать его в поворотных кодировщиках , поэтому я ссылаюсь на «Turn My Way» .
Обратите внимание, что эта кодировка оставляет некоторую степень свободы. Например, после бинарного 1100, существует четыре возможных следующие коды: 1101, 1110, 1000 и 0100. Поэтому я определим , как наименьший, а не ранее используемое значение , которое отличается только один символ в двоичной кодировке. Эта последовательность соответствует A163252 .
Поскольку это задача «чистой последовательности», задача состоит в том, чтобы вывести для заданного качестве входных данных, где - это A163252 .
задача
Учитывая целочисленный ввод , выведите в целочисленном формате ( не в двоичном формате).
определяется как наименее положительное целое число, не встречающееся ранее в последовательности, так что и отличаются только одним битом при записи в двоичном виде.
Примечание: здесь предполагается индексирование на основе 1; Вы можете использовать индексирование на основе 0, поэтому и т. д. Пожалуйста, укажите это в своем ответе, если вы решите использовать это.
Контрольные примеры
Input | Output
--------------
1 | 1
5 | 4
20 | 18
50 | 48
123 | 121
1234 | 1333
3000 | 3030
9999 | 9997
правила
- Вход и выход являются целыми числами (ваша программа должна по крайней мере поддерживать вход и выход в диапазоне от 1 до 32767)
- Неверный ввод (0, значения с плавающей запятой, строки, отрицательные значения и т. Д.) Может привести к непредсказуемым результатам, ошибкам или (не) определенному поведению. В A163252 , ( 0 ) определяется как 0. Для этой задачи мы будем игнорировать это.
- Стандартные правила ввода / выводаПрименяются .
- Лазейки по умолчанию запрещены.
- Это код-гольф , поэтому самые короткие ответы в байтах выигрывают
Конечная нота
Смотрите следующие связанные (но не равные) вопросы PP & CG: