【发布时间】:2015-01-14 14:23:24
【问题描述】:
我正在尝试打印一个十进制整数(非负)作为 2 的幂的总和,即对于输入 10,它应该打印不带引号的“2 8”。我已经写了这段代码,但是谁能给我一个单行代码。
n = bin(int(raw_input()))[-1:1:-1]
print (' ').join([str((int(n[j])+1)**j) for j in xrange(len(n)) if n[j] == '1'])
【问题讨论】:
-
我没有得到,怎么从 10 变成 28??
-
你在这里尝试不清楚
-
OP 正在尝试获取构成整数的二进制组件。所以
2+8=10、1+2+8=11、1+256=257等等……
标签: python python-2.7 optimization