《程序设计基础二》类的设计部分练习题目:1432--1446,运算符重载部分练习题目:1447--1461

Problem 1916. -- 小球

1916: 小球

Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld
Submitted: 48  Accepted: 27
[Submit][Status][Web Board]

Description

许多的小球一个一个的从一棵满二叉树上掉下来,每一时间,一个正在下降的球第一个访问的是根节点。然后继续下降时,或者走右子树,或者走左子树,直到访问到叶子节点。决定球运动方向的是每个节点的布尔值。最初,所有的节点都是FALSE,当访问到一个节点时,如果这个节点是FALSE,则这个球把它变成TRUE,然后从左子树走,继续它的旅程。如果节点是TRUE,则球也会改变它为FALSE,而接下来从右子树走。

假如满二叉树有4层, 因为所有的节点最初为FALSE,所以第一个球将会访问节点1,节点2和节点4,转变节点的布尔值后在在节点8停止。第二个球将会访问节点1、3、6,在节点12停止。明显地,第三个球在它停止之前,会访问节点1、2、5,在节点10停止。
  现在你的任务是,给定满二叉树的深度D,需要求第I个小球下落(你可以假定I不超过给定的的叶子数)停止时的叶子序号。

Input

每组测试数据占一行,包括2个整数D和I(2<=D<=20,I>=1且不超过满二叉树的叶子数)。

Output

输出第I个小球下落停止时的叶子序号。

Sample Input

4 2

Sample Output

12

Source

[Submit][Status][Web Board]