S40401.4-1 重绘迷宫

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

4-1 重绘迷宫

重绘迷宫

走廊第一段的墙壁上,嵌着一幅不断旋转的分形地图。不是平面地图——是三维的,街道和建筑以自相似的方式嵌套在一起,每一层都比上一层小一号,但结构完全相同。

"和G-10的套娃一样。"CC说,"Zero喜欢用一层包一层。"

"但这次更复杂。"Echo飘到地图前,投影被地图的旋转光纹切割成碎片,"G-10的套娃只有四个格子,每个格子转90度。这个套娃有八个格子,每个格子的旋转角度和缩放比例都不一样。"

地图中央有两个光点在闪烁——一个是你们现在的位置,另一个是出口。但要算出它们之间的真实距离,必须一层一层拆下去,把每一层的方位变化都逆向还原。

"就像剥洋葱。"你说,"从最外面开始,判断目标点落在哪个格子里,然后把它翻过来、缩回去,映射到下一层。一直剥到最里面的基础单元。"

CC在旁边看着,忽然说:"我来剥。"

"你——"

"双手都能用了。"她活动了一下左肩,金属关节发出轻微的咔哒声,"让我试试。"

她接过终端,开始一层层拆解。从最外层开始,逐层判断格子、做方位还原、继续往里剥。屏幕上,两个光点的坐标像剥洋葱一样一层层展开——第8层、第7层、第6层……直到最里面的基础网格。

"距离算出来了。"CC说,"三百米。但沿着迷宫路径要走八百米。"

"那就跑。"你说。


题目描述

分形迷宫。级别 NN 的迷宫由 CC 个级别 N1N-1 的迷宫按特定旋转和缩放方式组成。求两个点编号 SSEE 的直线距离*10(四舍五入)。旋转规则与常见的分形不同。

输入格式

N,C,S,EN, C, S, E。然后 CC 行,每行描述一个子迷宫的旋转和缩放参数。

输出格式

距离*10,四舍五入。

输入样例

1
3

输出样例

X
-
X X   X X
 X     X 
X X   X X
   X X   
    X    
   X X   
X X   X X
 X     X 
X X   X X
-

提示

  • 从最高层开始,判断目标点落在哪个子迷宫。
  • 对该子迷宫做逆旋转和逆缩放,映射到下一层。
  • 递归到第0层的基础单元。

走廊尽头的终端屏幕上,滚动着一串奇怪的字符——不是普通的数字,是一种混合编码。

"陈叔留下的。"Echo说,"他用这种方式发送坐标,因为Zero的监控系统只能识别标准数字,混合编码会被当成乱码过滤掉。"

"咋个读?"CC问。

"先拆成两部分,再重新打包。"你说,"就像把两种不同尺寸的积木拆散,再用另一种规格拼回去。"

在线编程 IDE

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