Задачи
Gray Code
Gray Code
Коды Грея представляют собой двоичную систему нумерации, в которой два последовательных значения отличаются только в одном бите. Каждый код \textbf{N}-битовых кодов Грея содержит \textbf{N} бит. Наиболее простой случай при \textbf{N} = \textbf{1}, когда кодами Грея являются \textbf{0} и \textbf{1}.
Пусть имеется набор \textbf{N}-битовых кодов Грея. Тогда \textbf{N + 1} - битовые коды Грея строятся довольно просто. Выпишем имеющиеся коды в столбик, подведем линию под последним кодом, и "отразим" существующие коды под линией. То есть продублируем список в обратном порядке. Добавим \textbf{0} бит перед исходными кодами и \textbf{1} бит перед только что "отраженными". (поэтому коды Грея называются также "отраженными бинарными кодами.")
Рассмотрим построение кодов Грея для \textbf{N} = \textbf{2}:
\includegraphics{https://static.e-olymp.com/content/e7/e71a245aa70a214e0054bbbd15b01a2c816a6189.jpg}
Список кодов Грея для \textbf{N} = \textbf{2} имеет вид: \textbf{00}, \textbf{01}, \textbf{11}, \textbf{10}.
Вот как можно сгенерировать коды Грея для \textbf{N} = \textbf{3}:
\includegraphics{https://static.e-olymp.com/content/2a/2a82306f7bc85e05c8bd4d2760df1a23f2eb5df4.jpg}
Вам следует вычислить и вывести только \textbf{k}-ый код \textbf{N}-битовых кодов Грея. Коды нумеруются с \textbf{0}. Если \textbf{N} = \textbf{3} и \textbf{k} =\textbf{ 4}, то программа должна вывести \textbf{110}.
\InputFile
Состоит из нескольких тестов. Каждый тест представляет собой одну строку, содержащую значения \textbf{N }(\textbf{1} ≤ \textbf{N} ≤ \textbf{72}) и \textbf{k} (\textbf{0} ≤ \textbf{k} ≤ \textbf{2^N−1}). Последняя строка содержит два нуля и не обрабатывается.
If it isn't immediately obvious from the preceding text, note that the value of \textbf{k} may not fit in a \textbf{32} bit or even a \textbf{64}bit integer. It should also be noted that you will not want to compute all \textbf{2^N} gray code values, but focus your attention on the computation of \textbf{only} the \textbf{k}-th such value.
\OutputFile
For each input case display the case number (\textbf{1}, \textbf{2}, …), the values of \textbf{N} and \textbf{k}, and the \textbf{k}-th Gray code value (labeled as "\textbf{g}'). Follow the format shown in the samples below.
Входные данные #1
3 4 4 13 10 1023 12 1000 0 0
Выходные данные #1
Case 1: N = 3 k = 4 g = 110 Case 2: N = 4 k = 13 g = 1011 Case 3: N = 10 k = 1023 g = 1000000000 Case 4: N = 12 k = 1000 g = 001000011100