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;
}

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