问题类型:二叉树,二进制,从父节点。
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;
}