Files
OI-source/7.3889.cpp
2023-08-03 09:22:52 +08:00

40 lines
719 B
C++

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;
struct Point
{
LL x,y;
Point(LL xx=0,LL yy=0):x(xx),y(yy) { }
};
int T;
LL n,S,D;
Point f(int n,LL m)
{
if(n==0) return Point(0,0);
LL len=1<<(n-1),blo=1<<(2*n-2);
Point p=f(n-1,m%blo);
int z=m/blo;
if(z==0) return Point(p.y,p.x);
if(z==1) return Point(p.x,p.y+len);
if(z==2) return Point(p.x+len,p.y+len);
if(z==3) return Point(2*len-p.y-1,len-p.x-1);
}
int main()
{
#ifdef local
freopen("pro.in","r",stdin);
#endif
scanf("%d",&T);
while(T-->0)
{
scanf("%I64d%I64d%I64d",&n,&S,&D);
S--; D--;
Point a=f(n,S),b=f(n,D);
LL dx=a.x-b.x,dy=a.y-b.y;
printf("%.0f\n",sqrt(dx*dx+dy*dy)*10);
}
return 0;
}