格雷码:循环移位与异或
C++
Hard
loops
任务 «格雷码:循环移位与异或»
给定一个整数 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