解题思路:拆分为不同的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 人评分
【计算两点间的距离】 (C语言代码)浏览:883 |
1157题解浏览:715 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:676 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:529 |
简单的a+b (C语言代码)浏览:531 |
剪刀石头布 (C++代码)浏览:1712 |
字符删除 (C语言代码)浏览:720 |
母牛的故事 (C语言代码)浏览:479 |
A+B for Input-Output Practice (C语言代码)浏览:471 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:526 |