Código Gray: Desplazamiento cíclico y XOR

C++ Hard loops

Tarea «Código Gray: Desplazamiento cíclico y XOR»

Dado un número entero N (1 ≤ N ≤ 20). Genere una secuencia de 2^N números que representan el código Gray para los números de 0 a 2^N-1. Luego, para cada número en esta secuencia, realice un desplazamiento cíclico de su representación binaria hacia la derecha en 1 bit y aplique la operación XOR con el número original. Muestre los valores obtenidos en orden ascendente de los números originales. Use solo bucles y operaciones de bits, evitando la recursión.

Formato de entrada

Un número entero N (1 ≤ N ≤ 20).

Formato de salida

2^N números enteros, separados por espacios, cada uno en una nueva línea.

Ejemplos

Ejemplo 1

ENTRADA
3 1 2 3 4 5 6 7 8 9
SALIDA
15

Ejemplo 2

ENTRADA
1 5
SALIDA
1 2 4 8 16

Ejemplo 3

ENTRADA
5 1 2 3 4 5 2 3
SALIDA
12

Ejemplo 4

ENTRADA
3
SALIDA
1 0 0 2 0 4 4 6
main.cpp