S40206.2-6 追溯街道

传统题 时间 1000 ms 内存 256 MiB 3 尝试 0 已通过 0

2-6 追溯街道

追溯街道

G-10井架的入口不是一扇门,而是一张不断旋转的分形地图。街道以自相似的方式嵌套——第0层是一个点,第1层是四个点组成的方块,第2层是四个第1层方块按不同角度拼接,依此类推。

Echo说这叫"压缩空间"——Zero用递归结构把几公里的实际距离折叠成几十米的数据走廊。如果不按分形规则走,你会永远在同一条街道上循环。

"两个目标点的编号是 SSEE。"Echo在空中标出两个光点,"先递归找到它们在每一层的坐标,然后计算实际路径长度。"

CC看着地图上无限嵌套的街道,忽然说:"太奶奶讲过,火星的城市以前是很规则的方块。后来Zero来了,把一切都改成了这种……无限套娃的样子。"

"因为分形最省资源。"Echo说,"同一个规则,生成任意规模的结构。"

你开始递归拆解。从最高层开始,判断目标点落在哪个象限——每个象限的旋转角度不同,需要坐标变换。一层一层剥下去,直到第0层的基础点。

屏幕上跳出了两个坐标。距离不远——直线距离两公里,但沿着分形街道要走三倍。

"那就跑。"CC说。


题目描述

分形城市。级别 NN 的城市由四个级别 N1N-1 的城市按特定旋转方式组成。求两个房子编号 SSEE 的直线距离*10(四舍五入)。

输入格式

多组。每组 N,S,EN, S, EN=0N=0 结束。

输出格式

每组一行——距离*10 取整。

输入样例

2
1 1 1 2
2 2 2 3

输出样例

0
0

提示

  • 递归求坐标。每层四个象限——旋转规则不同。
  • 22N2^{2N} 可能很大——注意数据范围。
  • N31N \le 31

分形地图在终端上解体,露出后面真正的通道。CC第一个冲进去,金属肩膀在幽暗中反射着应急灯的绿光。

你跟上去,听见Echo在身后轻轻说:"递归有终点。Zero的规则再复杂,归根到底都要回到第0层的基础点。"

"第0层是什么?"

Echo沉默了一秒:"是一个选择。"

在线编程 IDE

建议全屏模式获得最佳体验