问题类型:二叉树,二进制,从父节点。
03pie’s solution for [UVA-679]:
问题链接
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
int n,I,D;
while (cin >> n && n >= 0) {
while (n --) {
cin >> D >> I;
int k = 1;
while (-- D) {
if (I%2) k = k<<1;
else k = (k<<1)+1;
I = (I+1)>>1; //对于奇数来说I>>2+1,对于偶数不变I>>2;
}
cout << k << endl;
}
}
return 0;
}