Java教程

分形之城

本文主要是介绍分形之城,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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;
}
这篇关于分形之城的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!