解题思路:拆分为不同的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二级辅导-等差数列 (C语言代码)浏览:830 |
点我有惊喜!你懂得!浏览:4114 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:745 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:627 |
奖学金 (C++代码)浏览:2053 |
剔除相关数 (C语言代码)浏览:1058 |
哥德巴赫曾猜测 (C语言代码)浏览:1150 |
A+B for Input-Output Practice (III) (C语言代码)浏览:592 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:863 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:866 |