解题思路:拆分为不同的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++代码)浏览:1460 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1144 |
WU-格式化数据输出 (C++代码)浏览:1194 |
【金明的预算方案】 (C++代码)浏览:840 |
【绝对值排序】 (C语言代码)浏览:820 |
最小公倍数 (C语言代码)浏览:1026 |
图形输出 (C语言代码)浏览:1377 |
小O的乘积 (C++代码)浏览:519 |
明明的随机数 (C语言代码)浏览:953 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:728 |