python
2026-05-17 21:35:21
发布于:江苏
0阅读
0回复
0点赞
n = int(input())
# 优秀的拆分要求:n 的二进制表示中,1 的个数 >= 2,且不能有 2^0 项
# 因为 2^0 = 1 不是 2 的正整数次幂(正整数次幂指数 >= 1)
if n % 2 == 1: # 奇数一定包含 2^0 = 1
print(-1)
else:
# 输出二进制中所有 1 对应的位权(从高到低)
res = []
bit = 1
while n > 0:
if n & 1:
res.append(bit)
bit <<= 1
n >>= 1
# 上面得到的 bit 是从低到高,需要反转并输出
print(' '.join(map(str, res[::-1])))
这里空空如也

有帮助,赞一个