递归求解: 1208 ms
利用数组存储求得的答案 : 850 ms
ans=["" for i in range(20010)]
def getA(n):
if n==0:
return "0"
if n==1:
return "2(0)"
if n==2:
return "2"
#递归边界
if len(ans[n])!=0:
#查一下在不在答案集里
return ans[n]
else:
s=""
t=0
x=n
isf=False
#判断要不要多加一个+
while(x>0):
tt=x%2
if tt==1:
if isf:
s="+"+s
if t==1:
s="2"+s
else:
s="2"+"("+getA(t)+")"+s
isf=True
t+=1
x=x//2
ans[n]=s
return s
try:
while True:
n = int(input())
print (getA(n))
except EOFError:
pass
#python使用try方法读入未知组数据