
Fractal Streets
(从左到右分别是一到三级的分形图,小正方形的边长为10,点在小正方形的正中央)
发布日期:2021-05-07 07:06:02
浏览次数:28
分类:精选文章
本文共 1486 字,大约阅读时间需要 4 分钟。
F r a c t a l S t r e e t s Fractal Streets Fractal Streets
题目链接:
题目大意
给你一个原始的分形图, t t t组数据,对于每组数据,输入 3 3 3个数 n n n, h h h, o o o 。
( n n n为在第 n n n级, h h h, o o o为两个房子的编号) 我们要求求在第 n n n级情况下,编号为 h h h和 o o o的两个点之间的距离为多少。 (输出的值要四舍五入到整数) 其中,第 n n n级分形图形成规则如下:- 在右下角和右上角复制一遍 n − 1 n-1 n−1情况下的分形图
- 将 n − 1 n-1 n−1情况下的分形图逆时针旋转 90 90 90度,放到左上角
- 将 n − 1 n-1 n−1情况下的分形图顺时针旋转 90 90 90度,放到左下角
编号是从左上角那个点开始计 1 1 1,沿着道路计数。

样例输入
31 1 22 16 13 4 33
样例输出
103050
数据范围
n < 16 n < 16 n<16
h , o < 2 31 h,o < 2^{31} h,o<231思路
这道题要用递归 ( d f s ) (dfs) (dfs)来做。
我们可以将第 n n n级变成 4 4 4个 n − 1 n-1 n−1级,然后判断我们要找的那个点在哪一个,然后一直递归下去,就可以找到编号点所对应的坐标了。 我们找到两个编号的坐标,就可以通过勾股定理求出距离了。代码
#include#include #define abs(x) (x)<0?0-(x):(x)#define pow(x) (x)*(x)#define ll long longusing namespace std;int T,n;ll h,o,xx,yy,xxx,yyy;void place(int nn,ll num,ll &x,ll &y){ if (nn==1)//已经递归到最后一级了 { if (num==1)//在左上角 { x=1; y=1; } else if (num==2)//右上角 { x=1; y=2; } else if (num==3)//左下角 { x=2; y=2; } else if (num==4)//右下角 { x=2; y=1; } return ; } ll temp=(ll)1<<(2*nn-2);//计算出四个区的分界线 if (num<=temp) place(nn-1,num,y,x);//左上角 else if (num<=2*temp)//右上角 { place(nn-1,num-temp,x,y);//递归 y+=1<<(nn-1);//准确坐标 } else if (num<=3*temp)//左下角 { place(nn-1,num-2*temp,x,y);//递归 x+=1<<(nn-1);//准确坐标 y+=1<<(nn-1); } else if (num<=4*temp)//右下角 { place(nn-1,num-3*temp,y,x);//递归 x=(1<
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月08日 05时14分22秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2021-05-08
计算输入的一句英文语句中单词数
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08
6 个 Linux 运维典型问题
2021-05-08
取消vim打开文件全是黄色方法
2021-05-08
一个系统部署多个tomcat实例
2021-05-08
HP服务器设置iLO
2021-05-08
从头实现一个WPF条形图
2021-05-08
使用QT实现一个简单的登陆对话框(纯代码实现C++)
2021-05-08
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2021-05-08
GLFW 源码 下载-编译-使用/GLAD配置
2021-05-08
针对单个网站的渗透思路
2021-05-08
Typescript 学习笔记六:接口
2021-05-08
【ASP.NET】ASP.NET中权限验证使用OnAuthorization实现
2021-05-08
02、MySQL—数据库基本操作
2021-05-08
OpenJDK1.8.0 源码解析————HashMap的实现(一)
2021-05-08
MySQL-时区导致的时间前后端不一致
2021-05-08
2021-04-05阅读小笔记:局部性原理
2021-05-08
go语言简单介绍,增强了解
2021-05-08