算法1
(暴力枚举)
注意用3,4,5,6来调试一下
python 代码
nums = []
while True:
try:
nums.append(int(input()))
except:
break
def dfs(n):
if n == 1:
return '2(0)'
if n == 2:
return '2'
if n == 3:
return '2+2(0)'
if n == 0:
return ''
#寻找最大的一个二次幂
num = bin(n)[2:]
l = len(num)
#print(num)
#2^(l-1)
if n - 2**(l-1) == 0:
return '2('+dfs(l-1)+')'
return '2('+dfs(l-1)+')+'+dfs(n - 2**(l-1))
for num in nums:
print(dfs(num))