Problem3034--小球下落[Dropping Balls,UVA679]

3034: 小球下落[Dropping Balls,UVA679]

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 0  Solved: 0
[Status] [Submit] [Creator:]

Description

有一棵二叉树,最大深度为D,且所有叶子的深度都相同。所有节点从上到下,从左到右的编号为1,2,3...,2^D-1.
在结点1处放一个小球,它会往下落,每个内结点上都有一个开关(开关的状态是false或true),初始时全部是false状态,当每次有小球落到这个结点上时,开关的状态被改变。
当小球达到一个内结点时,如果该结点的开关状态是关闭的,则小球往左走,否则往右走,直到走到叶子结点。
如下图所示:

表示结点编号为1,2,3...15,最大深度为4的完全二叉树,由于初始时,所有的结点的开关状态是false,所以第一个球下落时经过结点1 2 4最终落在结点8上,第二个球下落时经过结点1 3 6最终落在结点12上,第三个球下落时,经过结点1 2 5最终落在结点10上。


现在给出多组测试数据,最多包含1000组,每组测试数据两个值。第一个值是D,表示二叉树的最大深度。第二个值是I,表示小球的个数I。
假设I不超过整棵树的叶子个数,2≤D≤20,and 1≤I≤524288
编写一个程序,计算出小球从节点1处依次开始下落,最后一个小球I将会落下哪里?输出第I个小球最后所在的叶子编号。

Input

第一行一个整数n,表示测试数据的组数
接下来n行,每行两个整数分别表示二叉树的深度D和小球的个数I,用空格隔开
最后一行,“-1”,表示测试数据结束

Output

输出n行,分别表示每组测试数据,第I个小球最后所在的叶子编号

Sample Input Copy

5
4 2
3 4
10 1
2 2
8 128
-1

Sample Output Copy

12
7
512
3
255

Source/Category