任何一个正整数都可以用2的幂次方表示。例如 137=27+23+20
同时约定方次用括号来表示,即 ab可表示为a(b)。
由此可知,137可表示为 2(7)+2(3)+2(0)
进一步:
7= 22+2+20(21用2表示),并且3=2+20
所以最后 137可表示为 2(2(2)+2+2(0))+2(2+2(0))+2(0)。
一个正整数n,1≤n≤2×104
符合约定的n的0, 2表示(在表示中不能有空格)。
1315
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
NOIP1998普及组
n=int(input())
def f(n,i,s):
if n==0: return s
if n&1==0: return f(n>>1,i+1,s)
if n&1:
if s!="": s="+" + s
if i==0: return f(n>>1,i+1, "2(0)" + s)
if i==1: return f(n>>1,i+1, "2" + s)
return f(n>>1,i+1, "2(" + f(i,0,"") + ")" + s)
print( f(n,0,"") )