Gray-Code: Zyklische Verschiebung und XOR
C++
Hard
loops
Aufgabe «Gray-Code: Zyklische Verschiebung und XOR»
Gegeben ist eine ganze Zahl N (1 ≤ N ≤ 20). Generieren Sie eine Folge von 2^N Zahlen, die den Gray-Code für die Zahlen von 0 bis 2^N-1 darstellen. Führen Sie dann für jede Zahl in dieser Folge eine zyklische Verschiebung ihrer binären Darstellung um 1 Bit nach rechts durch und wenden Sie die XOR-Operation mit der ursprünglichen Zahl an. Geben Sie die resultierenden Werte in aufsteigender Reihenfolge der ursprünglichen Zahlen aus. Verwenden Sie nur Schleifen und Bitoperationen, vermeiden Sie Rekursion.
Eingabeformat
Eine ganze Zahl N (1 ≤ N ≤ 20).
Ausgabeformat
2^N ganze Zahlen, durch Leerzeichen getrennt, jede in einer neuen Zeile.
Beispiele
Beispiel 1
EINGABE
3
1 2 3
4 5 6
7 8 9
AUSGABE
15
Beispiel 2
EINGABE
1 5
AUSGABE
1 2 4 8 16
Beispiel 3
EINGABE
5
1 2 3 4 5
2 3
AUSGABE
12
Beispiel 4
EINGABE
3
AUSGABE
1
0
0
2
0
4
4
6
main.cpp