本文主要是介绍分形之城,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Q
A
#include<iostream>
#include<complex>
#include<iomanip>
using namespace std;
using LL = long long ;
using PLL = pair<LL,LL>;
PLL calc(LL n,LL m){
if(0==n){
return {0,0};
}
LL len=1ll<<(n-1);
LL cnt=1ll<<(2*n-2);
PLL pos=calc(n-1,m%cnt);
LL x=pos.first,y=pos.second;
int z=m/cnt;
if(0==z){
return {-y-len,-x+len};
}else if(1==z){
return{x+len,y+len};
}else if(2==z){
return {x+len,y-len};
}else{
return{y-len,x-len};
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int N;
cin>>N;
while(N--){
LL n,m1,m2;
cin>>n>>m1>>m2;
PLL pos1=calc(n,m1-1);
PLL pos2=calc(n,m2-1);
double delta_x=(double)(pos1.first-pos2.first);
double delta_y=(double)(pos1.second-pos2.second);
cout<<fixed<<setprecision(0)<<sqrt(delta_x*delta_x+delta_y*delta_y)*5<<'\n';
}
return 0;
}
这篇关于分形之城的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!