原題鏈接: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;
}