十九世纪最聪明、最富有的公爵之一建造了一个防盗室来存放他的贵重物品,并以一种巧妙的方式选择了保险柜的密码。他非常害怕被抢劫,以至于没有告诉任何人保险柜的秘密;他只是把获取密码的方法写在一张纸上,留给他的继承人在他去世时查看。
- 查看我公爵戒指的底部,现在这枚戒指归你了。
- 按照顺时针方向写下数字和符号,从最靠近红宝石的数字开始,并省略最后一个符号。这就是第一组数字和符号序列。 从下一个数字开始,按照顺时针方向重复同样的操作。这就是第二组数字和符号序列。 重复此过程,始终从下一个数字开始,直到你已经从所有数字开始过为止。现在你有了几组数字和符号序列。
- 对于每一组数字和符号序列,执行以下操作:
(a) 将每个
?替换为+、-或*符号。 以所有可能的方式进行替换,从而得到多个算术表达式。 (b) 计算每个算术表达式的值,以任意顺序执行加法、减法和乘法。 以所有可能的方式进行计算,从而得到多个值。 (c) 选择这些值中的最小值和最大值。 (d) 写下最小值的数字,并在其后附加最大值的数字。这就是该数字和符号序列的密码。 - 将所有数字和符号序列的密码按获取顺序连接起来。该数字序列即为保险柜的秘密。
当公爵去世后,他的儿子读了这张纸条,试图找出保险柜的秘密。前两个步骤非常简单,因为只有五组数字和符号序列,获取顺序如下:
1 ? 5 + 0 ? -2 - -3 5 + 0 ? -2 - -3 * 1 0 ? -2 - -3 * 1 ? 5 -2 - -3 * 1 ? 5 + 0 -3 * 1 ? 5 + 0 ? -2
然后,他进入第三步,并决定从第一组数字和符号序列开始。当他意识到可以创建多个算术表达式时,困难在 (a) 点出现了,例如: $1 + 5 + 0 + -2 - -3$,$1 - 5 + 0 * -2 - -3$,以及 $1 * 5 + 0 - -2 - -3$。
因此,他决定在完成此任务之前先弄清楚其余的规则。在 (b) 点,他必须计算算术表达式。这看起来很简单。$1 + 5 + 0 + -2 - -3$ 的值是 $7$。但是他能从 $1 - 5 + 0 * -2 - -3$ 中得到多少个不同的值呢?
- 如果运算是从左到右执行的,即 $(((1 - 5) + 0) * -2) - -3$,结果将是 $11$。
- 如果运算是从右到左执行的,即 $1 - (5 + (0 * (-2 - -3)))$,结果将是 $-4$。
- 如果先执行第一次减法和乘法,即 $(1 - 5) + (0 * -2) - -3$,结果将是 $-1$。
- 还有许多其他选择!
在绝望中,他得出结论,他必须在第三步中获得大量的数值。幸运的是,最后的规则实际上很简单。如果 $-4$ 是从第一组序列中获得的最小值,而 $11$ 是最大值,那么第一组序列的密码就是 $411$。此外,如果第二组序列的密码是 $512$,第三组序列的密码是 $613$,第四组序列的密码是 $714$,第五组序列的密码是 $815$,那么保险柜的秘密就是 $411512613714815$。
尽管公爵的儿子不遗余力地寻找秘密,但他从未实现这一目标。事实上,到目前为止还没有人能打开这个保险柜。现在宫殿将被改建成博物馆,你能帮忙揭开宝藏的秘密吗?
题目描述
给定从公爵戒指上获得的数字和符号序列,从最靠近红宝石的数字开始,按顺时针方向排列,并包含最后一个符号,目标是找出保险柜的秘密。保证对于给定的输入,上述过程获得的任何值都适合标准的有符号 64 位整数。
输入格式
第一行包含一个正整数 $k$,表示构成序列的 (数字, 符号) 对的数量。
接下来一行包含 $2k$ 个元素 $n_1, s_1, n_2, s_2, \dots, n_k, s_k$,以单个空格分隔,其中 $n_i$ 表示一个数字,$s_i$ 表示一个符号,即 +、-、* 或 ?(对于每个 $i = 1, 2, \dots, k$)。
数据范围
$2 \le k \le 200$ 构成序列的 (数字, 符号) 对的数量。 $-9 \le n_i \le 9$ 序列中的数字。
输出格式
输出一行,包含保险柜的秘密。
样例
样例输入 1
5 1 ? 5 + 0 ? -2 - -3 *
样例输出 1
914710203014163336
Figure 1. 公爵戒指上的数字和符号序列