eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Коди Грея

Коди Грея

Згенеруємо послідовність чисел у двійковій системі числення. Генерацію почнемо з послідовності \begin{lstlisting}[language=C++] 0 1 - \end{lstlisting} Відобразимо послідовність симетрично відносно горизонтальної прямої, і припишемо ноль спереду до чисел першої половини та одиницю до чисел другої половини. Отримаємо \begin{lstlisting}[language=C++] 00 01 11 10 \end{lstlisting} Повторюючи процес ще раз, отримаємо $8$ чисел \begin{lstlisting}[language=C++] 000 0 001 1 011 3 010 2 110 6 111 7 101 5 100 4 \end{lstlisting} Відповідні десяткові числа для кожного згенерованого двійкового числа наведені справа. Побудовані послідовності називаються відображеними кодами Грея відповідно для $1, 2$ та $3$ біт. Кодами Грея для $n$ біт називається послідовність з $2n$ різних $n$-бітових цілих чисел з тією властивістю, що будь-які дві сусідні послідовності відрізняються одна від одної лише в одному біті. Відображені коди Грея будуються як наведено вище. \InputFile Перший рядок містить кількість тестів $t~(t \le 250000)$. Кожний тест складається з одного рядка, який містить два цілі числа $n~(1 \le n \le 30)$ та $k~(0 \le k < 2^n)$. \OutputFile Для кожного тесту в окремому рідку вивести число в $k$-ій позиції $n$-бітових відображених кодів Грея.
Ліміт часу 1 секунда
Ліміт використання пам'яті 128 MiB
Вхідні дані #1
14
1 0
1 1
2 0
2 1
2 2
2 3
3 0
3 1
3 2
3 3
3 4
3 5
3 6
3 7
Вихідні дані #1
0
1
0
1
3
2
0
1
3
2
6
7
5
4