Код Грея: Циклический сдвиг и XOR
C++
Сложный
loops
Задача «Код Грея: Циклический сдвиг и XOR»
Дано целое число N (1 ≤ N ≤ 20). Сгенерируйте последовательность из 2^N чисел, представляющих собой код Грея для чисел от 0 до 2^N-1. Затем для каждого числа в этой последовательности выполните циклический сдвиг его двоичного представления вправо на 1 бит и примените операцию XOR с исходным числом. Выведите полученные значения в порядке возрастания исходных чисел. Используйте только циклы и битовые операции, избегая рекурсии.
Формат ввода
Одно целое число N (1 ≤ N ≤ 20).
Формат вывода
2^N целых чисел, разделённых пробелами, каждое на новой строке.
Примеры
Пример 1
ВВОД
3
1 2 3
4 5 6
7 8 9
ВЫВОД
15
Пример 2
ВВОД
1 5
ВЫВОД
1 2 4 8 16
Пример 3
ВВОД
5
1 2 3 4 5
2 3
ВЫВОД
12
Пример 4
ВВОД
3
ВЫВОД
1
0
0
2
0
4
4
6
main.cpp