Code de Gray : Décalage cyclique et XOR

C++ Hard loops

Tâche «Code de Gray : Décalage cyclique et XOR»

Étant donné un entier N (1 ≤ N ≤ 20). Générez une séquence de 2^N nombres représentant le code de Gray pour les nombres de 0 à 2^N-1. Ensuite, pour chaque nombre de cette séquence, effectuez un décalage cyclique de sa représentation binaire vers la droite de 1 bit et appliquez l'opération XOR avec le nombre original. Affichez les valeurs obtenues dans l'ordre croissant des nombres originaux. Utilisez uniquement des boucles et des opérations binaires, en évitant la récursion.

Format d\ entrée

Un entier N (1 ≤ N ≤ 20).

Format de sortie

2^N entiers séparés par des espaces, chacun sur une nouvelle ligne.

Exemples

Exemple 1

ENTRÉE
3 1 2 3 4 5 6 7 8 9
SORTIE
15

Exemple 2

ENTRÉE
1 5
SORTIE
1 2 4 8 16

Exemple 3

ENTRÉE
5 1 2 3 4 5 2 3
SORTIE
12

Exemple 4

ENTRÉE
3
SORTIE
1 0 0 2 0 4 4 6
main.cpp