Código Gray: Deslocamento Cíclico e XOR

C++ Hard loops

Tarefa «Código Gray: Deslocamento Cíclico e XOR»

Dado um número inteiro N (1 ≤ N ≤ 20). Gere uma sequência de 2^N números representando o código Gray para números de 0 a 2^N-1. Em seguida, para cada número nesta sequência, realize um deslocamento cíclico de sua representação binária para a direita em 1 bit e aplique a operação XOR com o número original. Exiba os valores obtidos em ordem crescente dos números originais. Use apenas loops e operações bit a bit, evitando recursão.

Formato de Entrada

Um número inteiro N (1 ≤ N ≤ 20).

Formato de Saída

2^N números inteiros separados por espaços, cada um em uma nova linha.

Exemplos

Exemplo 1

ENTRADA
3 1 2 3 4 5 6 7 8 9
SAÍDA
15

Exemplo 2

ENTRADA
1 5
SAÍDA
1 2 4 8 16

Exemplo 3

ENTRADA
5 1 2 3 4 5 2 3
SAÍDA
12

Exemplo 4

ENTRADA
3
SAÍDA
1 0 0 2 0 4 4 6
main.cpp