fanzetao


私信TA

用户名:dotcpp0711301

访问量:126

签 名:

等  级
排  名 18283
经  验 704
参赛次数 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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区