fanzetao


私信TA

用户名:dotcpp0711301

访问量:211

签 名:

等  级
排  名 19704
经  验 712
参赛次数 0
文章发表 4
年  龄 0
在职情况 学生
学  校 西安邮电大学
专  业

  自我简介:

解题思路:拆分为不同的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 人评分

  评论区

  • «
  • »