AcWing 98. 分形之城
#include <bits/stdc++.h> #define ll long long #define PII pair<int,int> #define PLL pair<ll,ll> using namespace std; PLL calc(int n,ll m) { if (n==0)return {0,0}; ll len=1ll<<(n-1),cnt=1ll<<(2*n-2); PLL pos=calc(n-1,m%cnt); ll x=pos.first, y=pos.second; ll z=m/cnt; if(z==0)return{y,x}; if(z==1)return{x,y+len}; if(z==2)return{x+len,y+len}; if(z==3)return{2*len-y-1,len-x-1}; } int main() { int t; cin>>t; while(t--) { ll n,a,b; cin>>n>>a>>b; PLL ac=calc(n,a-1); PLL bd=calc(n,b-1); double x=ac.first-bd.first; double y=ac.second-bd.second; printf("%.0lf\n", sqrt(x*x+y*y)*10); } return 0; }