1 条题解
-
0
题解
格雷码公式
编号为 的二进制反射格雷码可以直接计算:
其中 表示按位异或, 表示右移一位。
计算出 后,从第 位到第 位依次输出,即可保留前导零并得到恰好 位的答案。
本题 最大为 ,应使用
unsigned long long。不要计算1ULL << 64,因为移位位数等于类型宽度是未定义行为;本解法不需要计算 。为什么公式成立
普通二进制编号 的相邻两位发生进位时,会有一段连续位改变。把 与右移一位的 异或后,每个格雷码位表示相邻两个二进制位是否不同。这样构造出的顺序与题目给出的“前半加 0、后半反向加 1”的递归生成完全一致。
复杂度
- 计算公式为 ;
- 输出 位需要 时间;
- 空间复杂度:。
信息
- ID
- 4970
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
粤公网安备44195502000195号