ZOJ Problem Set - 1062 Trees Made to Order Python&n
#encoding=utf8
import sys
# h(n) n
h = []
# s(n) n
# s(n) = h(n-1) + s(n-1)
s = []
def print_tree(node_n, no):
""" node_n no ,no 1 """
index = 1
for i in range(0, node_n):
if no < index + h[i] * h[node_n - 1 - i]:
no_right = (no - index + 1) % h[node_n - 1 - i]
if no_right == 0:
no_left = (no - index + 1) / h[node_n - 1 - i]
no_right = h[node_n - 1 - i]
else:
no_left = (no - index + 1) / h[node_n - 1 - i] + 1
#
if i > 0:
sys.stdout.write('(')
print_tree(i, no_left)
sys.stdout.write(')')
sys.stdout.write('X')
#
if node_n - 1 - i > 0:
sys.stdout.write('(')
print_tree(node_n - 1 - i, no_right)
sys.stdout.write(')')
break
else:
index += h[i] * h[node_n - 1 - i]
if __name__ == '__main__':
# s[] h[]
h.append(1)
h.append(1)
s.append(0)
s.append(1)
# s[] h[]
while s[-1] < 500000000:
n = len(h)
h_n = 0
for i in range(0, n):
h_n += h[i] * h[n - 1 - i]
h.append(h_n)
s.append(s[-1] + h[len(s) - 1])
for no in sys.stdin:
no = int(no)
if no == 0:
break
for i in reversed(range(0, len(s))):
if no >= s[i]:
# node_n
node_n = i
print_tree(node_n, no - s[i] + 1)
print ''
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.