其他分享
首页 > 其他分享> > 分形之城

分形之城

作者:互联网

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;
}

标签:double,LL,分形,m1,PLL,pos2,pos1
来源: https://www.cnblogs.com/jeseesmith/p/15993305.html