eolymp
bolt
Try our new interface for solving problems
Məsələlər

Коды Грея

Коды Грея

\textit{Коды Грея} получили своё название по имени Франка Грея (Frank Gray), физика из Bell Telephone Laboratories, который в \textbf{1930}-х годах изобрёл метод, в настоящее время используемый для передачи цветного телевизионного сигнала, совместно с существующими методами передачи и получения чёрно-белого сигнала; т.е. при получении цветного сигнала чёрно-белым приёмником изображение выводится оттенками серого цвета. Хотя существует множество различных вариантов кодов Грея, рассмотрим только один: "двоичный отражённый (рефлексный) код Грея". Именно этот код обычно имеется в виду, когда говорят о неконкретном "коде Грея". Отображённый двоичный код Грея строится следующим образом. Начинаем со строк \textbf{0} и \textbf{1}, которые представляют соответственно целые числа \textbf{0} и \textbf{1}. Возьмём отражение этих строк относительно горизонтальной оси после приведённого списка и поместим \textbf{1} слева от новых записей списка, а слева от уже имевшихся разместим \textbf{0}. Таким образом получен отражённый код Грея для \textbf{n = 2}. Чтобы получить код для \textbf{n = 3}, повторим описанную процедуру и получим: При таком способе построения легко увидеть по индукции по \textbf{n}, что, во-первых, каждая из \textbf{2^n} комбинаций битов появляется в списке, причём только один раз; во-вторых, при переходе от одного элемента списка к рядом стоящему изменяется только один бит; в-третьих, только один бит изменяется при переходе от последнего элемента списка к первому. Коды Грея, обладающие последним свойством называются циклическими, и отражённый код Грея обязательно является таковым. Для каждого заданного числа \textbf{k} вывести десятичное значение \textbf{k}-го кода Грея. \InputFile Во входном файле содержится некоторый набор тестовых данных, каждое число \textbf{k} (\textbf{0} ≤ \textbf{k} ≤ \textbf{10^18}) в наборе задано в отдельной строке. Количество наборов данных в одном тесте не превышает \textbf{10^5}. \OutputFile Для каждого заданного числа \textbf{k} вывести в отдельной строке десятичное значение \textbf{k}-го кода Грея.
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
3
14
5
12
Çıxış verilənləri #1
2
9
7
10