P12098 [NERC2024] Geometric Balance
题目描述
Peter 的弟弟 Ivan 喜欢和一只小乌龟玩耍。这只乌龟是一种特殊的玩具,它生活在平面上,能够执行三种指令:
- 逆时针旋转 $a$ 度;
- 沿当前朝向绘制 $d$ 个单位长度的线段,并留下墨迹。平面上的任意线段最多只会被涂墨一次;
- 沿当前朝向移动 $d$ 个单位长度,但不留下任何痕迹。
Ivan 刚刚学会使用指南针,因此他只会让乌龟朝向八个基本方向或次方向旋转(旋转角度 $a$ 总是 $45$ 的倍数)。此外,他至少会发出一条 $\texttt{draw}$ 指令。
Peter 记录了 Ivan 给乌龟下达的所有指令。他觉得乌龟绘制出的图案非常可爱。现在 Peter 想知道一个最小的正角度 $b$,使得他可以进行如下操作:将乌龟移动到任意位置,将其旋转 $b$ 度,然后按原顺序重新执行全部指令,最终绘制出的图案与原图案完全一致。
你能帮 Peter 找出这个最小的角度 $b$ 吗?
注意,如果两幅图在平面上被墨迹覆盖的点集合相同,则认为它们是**相同**的图案。
输入格式
第一行输入一个整数 $n\;(1 \le n \le 50000)$ —— 表示 Ivan 发出的指令数。
接下来的 $n$ 行中,每行表示一条指令,格式如下之一:
- $\texttt{rotate}$ $a$($45 \le a \le 360$,并且 $a$ 是 $45$ 的倍数);
- $\texttt{draw}$ $d$($1 \le d \le 10^9$);
- $\texttt{move}$ $d$($1 \le d \le 10^9$)。
保证至少有一条且最多 $2000$ 条指令为 $\texttt{draw}$。同时保证绘图过程中,平面上不会有任何线段被重复涂墨。
输出格式
输出一个整数,表示最小的角度 $b$,使得执行指定的操作后能够得到与原图案相同的结果。答案总是存在。