QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 2048 MB 總分: 100

#5130. 故障的旗舰

统计

Ahoy!你正在航行前往下一届“船只很酷”(Boats Are Pretty Cool)大会,准备推销你的最新发明:一种新型指南针。

在普通指南针上,很难读出精确的风向。然而,你的新型指南针让你能以更高的精度读出风向!该显示屏最多可以显示 1000 个字符的字符串。

不幸的是,你遇到了一些恶劣天气。经过几个小时的强风和大浪,你终于可以再次查看你的指南针了。你读出了你当前航行的风向 $X$,并知道你需要前往的风向 $Y$。然而,为了让船只转向,你必须在控制系统中输入船只需要转动的角度。为了回到正确的航线上,你需要转动的最小角度(以度为单位)是多少?

风向到角度的转换如下:四个基本风向 N、E、S 和 W 分别指向 0、90、180 和 270 度。还有四个由两个字母组成的方向:NE、SE、SW 和 NW,分别指向 45、135、225 和 315 度。

风向也可以由 $k \ge 3$ 个字母 $l_1l_2 \dots l_k$ 组成。在这种情况下,最后两个字母表示四个双字母风向之一,即 $l_{k-1}l_k \in \{\text{NE, SE, SW, NW}\}$,而其他字母等于这些字母之一,即对于所有 $i \le k - 2$,都有 $l_i \in \{l_{k-1}, l_k\}$。该风向指向以下两个风向的正中间:

  • 风向 $l_2 \dots l_k$,
  • 当你从 $l_2 \dots l_k$ 开始并沿着圆圈向 $l_1$ 方向移动时,遇到的第一个最多包含 $k - 1$ 个字母的风向。

例如,风向 SSSE 指向 SSE 和 S 的正中间,因为当从 SSE 向 S 移动时,S 是第一个最多包含 3 个字母的风向,这也可以在图 F.1 中看到。

图 F.1:风向

输入格式

输入包含:

  • 一行,包含两个字符串 $X$ 和 $Y$ ($1 \le |X|, |Y| \le 1000$),表示如上所述的风向。

输出格式

输出从方向 $X$ 到 $Y$ 所需的最小转动角度。

你的答案的绝对误差应不超过 $10^{-6}$。

样例

样例输入 1

N S

样例输出 1

180

样例输入 2

NNE SSSE

样例输出 2

146.25

样例输入 3

ENE NW

样例输出 3

112.5

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.