原题链接:yoj63 小猴子下落
/*
思路:第i个节点:第奇数个猴子经过时向左走,第偶数个猴子向右走
如果是第n个猴子经过第i个节点,则其左、右孩子节点是第(n+1)/2个猴子经过
*/
#include <cstdio>
using namespace std;
int main(){
int D, I;
while(scanf("%d%d", &D, &I) && (D || I)){
int k = 1;
for(int i = 1;i < D;i ++){ //每一层
if(I & 1) //奇偶性
k <<= 1; //编号
else
k = (k << 1) + 1;
I = (I + 1) >> 1; //下一层
}
printf("%d\n", k);
}
return 0;
}