解题思路:拆分为不同的2的幂次数,可以先算出来比n小的2的所有幂次,在进行取数操作
注意事项:
参考代码:
n = int(input())
i = 1
a = []
b = []
while 2**i <= n:
a.append(2**i)
i += 1
a.sort(reverse=True)
if n % 2 != 0:
print(-1)
else:
for i in a:
if n - i >= 0:
n -= i
b.append(i)
if n == 0:
for j in b:
print(j, end=" ")
break
if n != 0:
print(-1)
0.0分
1 人评分