Вступ (може бути проігноровано)
Розміщення всіх позитивних чисел у звичайному порядку (1, 2, 3, ...) трохи нудне, чи не так? Отже, ось низка викликів навколо перестановок (перестановок) усіх позитивних чисел. Це другий виклик у цій серії. Перший виклик можна знайти тут .
У цьому виклику ми використовуємо сірі коди для зберігання натуральних чисел. Сірий код або "відображений двійковий код" - це двійкове кодування таким чином, що два послідовних значення відрізняються лише одним бітом. Практичним застосуванням цього кодування є використання його в обертових кодерах , звідси моє посилання на "Поверніть мій шлях" .
Зауважте, що таке кодування залишає певну свободу. Наприклад, після двійкового 1100 є чотири можливі наступні коди: 1101, 1110, 1000 та 0100. Саме тому я визначу як найменше, раніше не використовуване значення, яке відрізняється лише одним символом у двійковому кодуванні. Ця послідовність відповідає A163252 .
Оскільки це завдання "чистої послідовності", завдання полягає у виведенні для заданого в якості вхідного сигналу, де - A163252 .
Завдання
З урахуванням цілого вводу , виведіть у цілочисленному форматі ( не у двійковому форматі).
визначається як найменше додатне ціле число, яке не зустрічається раніше в послідовності, таким чином, що і відрізняються лише одним бітом, коли вони записуються у двійковій формі .
Примітка: тут передбачається індексація на основі 1; Ви можете використовувати індексацію 0 на основі, так ( 0 ) = 1 ; a ( 1 ) = 3 і т. д. Будь ласка, зазначте це у своїй відповіді, якщо ви вирішили скористатися цим.
Тестові справи
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: