АнтиГрей
Как известно, английский математик Фрэнк Грей (Franc Gray) предложил остроумную формулу, которая позволяет по порядковому номеру определить соответствующий член последовательности, обладающей тем свойством, что двоичное представление каждого последующего члена отличается ровно в одном от двоичного представления предыдущего. Если обозначить i-ый разряд двоичного представления порядкового номера кода Грея через N_i, а через G_i - i-ый разряд двоичного представления соответствующего кода Грея, то имеет место формула:
G_i = N_i^N_{i+1}
Отметим, что разряды считаются занумерованными справа налево (с нуля). Функция на языке C, реализующая получение кода Грея для заданного целого параметра, равному номеру этого кода будет выглядеть так:
unsigned long long G(long long N)
{ return V ^ V » 1;}
Последовательность (G_i) будем называть последовательностью Грея. Наша задача, по заданному коду Грея получить число, которому этот код соответствует (т.е. номер члена последовательности Грея, равного этому коду).
Входные данные
Файл состоит из единственной строки - кода Грея, заданного в шестнадцатиричном виде. Длина заданной строки не превосходит 200 000, в качестве цифр, значения которых превосходят 9, взяты первые английские буквы верхнего регистра.
Выходные данные
Выходной файл состоит из единственной строки - шестнадцатиричного значения числа, код Грея которого был задан во входном файле. У результата не должно быть ведущих нулей, в качестве цифр, значения которых превосходят 9, следует взять первые английские буквы верхнего регистра.