题目描述
题目描述
一个密码转盘上按顺时针顺序排列着 36 个符号:大写字母 A 至 Z,随后是数字 0 至 9。依次将它们的位置编号为 0 至 35,因此位置 0 是 A,位置 26 是 0。
初始时,指针指向位置 0。给定一串指令,按顺序执行。每条指令的效果如下:
+:指针顺时针移动 1 个位置。如果当前位置是 35,则移动后回到位置 0;-:指针逆时针移动 1 个位置。如果当前位置是 0,则移动后到达位置 35;*:设当前指针所在位置为 ,先计算 。如果结果大于 35,就不断减去 36,直到结果在 0 至 35 之间,指针移动到这个位置;#:指针顺时针移动 5 个位置。如果移动时超过位置 35,就从位置 0 继续向后移动。
请输出执行完所有指令后,指针指向的符号。
输入格式
从文件 spin.in 中读取数据。
输入一行,包含一个非空字符串,仅由 +、-、*、# 组成,表示依次执行的指令。
输出格式
输出到文件 spin.out 中。
输出一个字符,表示最终指向的符号。
样例
+#*
A
+++---
A
样例解释
样例 #1 解释
初始位置为 0。执行 + 后到达位置 1,执行 # 后到达位置 6。
执行 * 时,先计算 。由于位置编号只有 0 至 35,将 36 减去 36 后得到 0,因此指针回到位置 0,最终指向 A。
数据规模与约定
本题采用子任务捆绑计分。每个子任务内的所有测试点均通过,才能获得该子任务的分数。
| 子任务 | 分值 | 特殊限制 |
|---|---|---|
| 1 | 30 | 指令仅包含 + 和 -,长度不超过 100 |
| 2 | 指令长度不超过 100 | |
| 3 | 40 | 指令长度不超过 1000 |
所有测试点均保证指令字符串非空,且仅包含 +、-、*、#。