nyoj63 小猴子下落

原题链接: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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章