让我们从左到右索引从1到2h的所有叶节点。出口位于某个节点n,其中1≤n≤2h,玩家不知道出口在哪里,因此他必须猜测自己的出路!
Amr遵循简单的算法来选择路径。让我们考虑无限命令字符串“LRLRLRLRL…”(由交替字符“L”和“R”组成)。Amr使用以下规则顺序执行字符串的字符:
字符'L'表示“转到当前节点的左侧子节点”;
字符“R”表示“转到当前节点的右侧子节点”;
如果目标节点已经被访问,Amr将跳过当前命令,否则他将移动到目标节点;
如果Amr跳过了两个连续的命令,他会在执行下一个命令之前返回到当前节点的父节点;
如果他到达了不是出口的子节点,他将返回到当前节点的父节点;
如果他到达出口,游戏就结束了。
现在Amr想知道,如果他遵循这个算法,他在到达出口之前要访问多少节点?
1 2
2
2 3
5
3 6
10
10 1024
2046
输入由两个整数h,n(1≤h≤50,1≤n≤2h)组成。
输出一个整数,表示Amr在到达出口之前要访问的节点数(不包括出口节点)。
1 2
2
2 3
5
3 6
10
10 1024
2046
注意
高度为h的完美二叉树是由h+1级组成的二叉树。级别0由称为根的单个节点组成,级别h由称为叶的2h节点组成。每个不是叶子的节点正好有两个子节点,左一个和右一个。
下图显示了样本测试编号3。节点根据访问顺序进行标记。
1 2
2