Код Грея#6005

Код Грея

1 секунда
64 мегабайти
Дуже легка

Коди Грея — це двійкова система нумерації, в якій два послідовні значення відрізняються лише одним бітом. Кожен -бітовий код Грея складається з бітів. Найпростіший випадок — це коли N = 1, де коди Грея є і .

Розглянемо набір -бітових кодів Грея. Щоб отримати (N + 1)-бітові коди Грея, можна скористатися простим методом. Спочатку запишіть наявні коди в стовпчик, проведіть лінію під останнім кодом, а потім "відобразіть" ці коди під лінією, тобто продублюйте список у зворотному порядку. Додайте перед початковими кодами і перед "відображеними". (Саме тому коди Грея також називають "відображеними бінарними кодами".)

Розглянемо приклад побудови кодів Грея для N = 2:

Список кодів Грея для N = 2 виглядає так: , , , .

Ось як можна згенерувати коди Грея для N = 3:

Ваше завдання — обчислити та вивести лише -ий код -бітових кодів Грея. Коди нумеруються з . Наприклад, якщо N = 3 і k = 4, програма повинна вивести .

Вхідні дані

Вхідні дані складаються з кількох тестів. Кожен тест — це один рядок, що містить значення (1 \le N \le 72) і (0 \le k \le 2^N-1). Останній рядок містить два нулі і не обробляється.

Зверніть увагу, що значення може не вміщатися в біт або навіть у біт. Також важливо не обчислювати всі 2^N значення коду Грея, а зосередитися на обчисленні лише -го значення.

Вихідні дані

Для кожного вхідного випадку виведіть номер випадку (, , …), значення і , та -те значення коду Грея (позначене як "g"). Дотримуйтесь формату, показаного в прикладах нижче.

Приклади

Приклад 1

Loading
Loading