当前你的浏览器版本过低,网站已在兼容模式下运行,兼容模式仅提供最小功能支持,网站样式可能显示不正常。
请尽快升级浏览器以体验网站在线编辑、在线运行等功能。

建议使用的浏览器:

谷歌Chrome 火狐Firefox Opera浏览器 微软Edge浏览器 QQ浏览器 360浏览器 傲游浏览器

1767:Which is Next

题目描述
Every computer science student knows binary trees. Here is one of many possible definitions of binary trees. Binary trees are defined inductively. A binary tree t is either an external node (leaf) ○ or an ordered pair t = (t1, t2) representing an internal node ● with two subtrees attached, left subtree t1 and right subtree t2. Under this definition the number of nodes in any binary tree is odd. Given an odd integer n let B(n) denote the set of all binary trees with n nodes, both internal and external. For instance B(1) consists of only one tree ○, B(3) = {(○,○ )} and B(5) = {(○, (○,○ )), ((○,○ ),○ )}. The trees of B(5) are depicted in the figure below.

Denote by |t| the number of nodes in a tree t. Given a tree t we define its unique integer identifier N (t) as follows:

N (○) = 0
N (t1, t2) = 2|t1|+|t2| + 2|t2| * N(t1) +N (t2)
For instance, N (○,○) = 22 + 21 * 0 + 0 = 4, N (○, (○,○ )) = 24 + 23 * 0 + 4 = 20,
N ((○,○ ),○ ) = 24 + 21 * 4 + 0 = 24.

Consider the following linear order on all binary trees:

1) ○ < = t
2) (t1, t2) < = (u1, u2) when t1 < u1, or t1 = u1 and t2 < = u2

In this order a single leaf is the smallest tree and given two nonleaf trees, the smaller one is that with the smaller left tree, if the left subtrees are different, and that with the smaller right subtree, otherwise. Hence for instance (○, (○,○ )) < ((○,○ ),○ ), since we have ○ < (○,○ ). Assume now that the trees in B(n) were sorted using the relation < =. Then, for each tree t in B(n) we define the successor of t as the tree that immediately follows t in B(n). If t is the largest one in B(n) then the successor of t is the smallest tree in set B(n). For instance, the successor of (○,○ ) in B(3) is the same tree (○, ○) and the successor of (○, (○,○ )) in B(5) is ((○,○ ),○ ). Given the integer identifier of some tree t can you give the identifier of the successor of t in B(|t|)?

Task
Write a program that:

reads the identifier of some binary tree t,
computes the identifier of the successor of t in B(|t|),
writes the result.
输入解释
The first and only line of the input contains one integer n (0 <= n < = 230) - the identifier of some binary tree
输出解释
The first and only line of the output should contain one integer s - the identifier of the successor of t in B(|t|).
输入样例
20
输出样例
24

该题目是Virtual Judge题目,来自 北京大学POJ

题目来源 Central Europe 2003

源链接: POJ-1767

最后修改于 2020-10-29T06:13:29+00:00 由爬虫自动更新

共提交 0

通过率 --%
时间上限 内存上限
1000 10000