tree
#include<stdio.h>
#include<vector>
#define REP(i, b, n) for (int i = b; i < n; i++)
#define rep(i, n) REP(i, 0, n)
#define DBG 0
using namespace std;
int A,B,N;
vector<int>lvl;
void init(){
int a=0,c=1;
rep(i,20)a+=c,c*=2,lvl.push_back(a);
}
int getL(int a){
rep(i,20)if(a<=lvl[i])return i;
}
void ans(){
int a=getL(A)+1,b=getL(B)+1,c=lvl[N-1];
if(DBG)printf("a,b,c: %d %d %d\n",a,b,c);
if(a>b)c-=(lvl[N-a]-1);
else c-=(lvl[N-b]-1);
printf("%d\n",c);
}
int main(){
int n;
init();
scanf("%d",&n);
rep(i,n)scanf("%d%d%d",&N,&A,&B),ans();
}
沒有留言:
張貼留言