A91477.Welcome24ever 和代数

普及/提高-

官方

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

最近,Welcome24ever 又在代数课上得了不太好的分数。为了避免今后再次出现这种令人不快的事情,Welcome24ever 决定练习自己的算术能力。

他在黑板上写下了四个整数 a,b,c,da, b, c, d。在接下来的三分钟里,他每分钟会进行一次操作:

  • 每次从黑板上任选两个数字(不要求相邻),
  • 用它们的或者替换这两个数(即把这两个数擦掉,写上它们的和或积),

三次操作之后,黑板上就只剩下一个数字。

不幸的是,由于他记性很差,他忘记了最后得到的那个数字。但他还记得:

  • 起初写下的四个数 a,b,c,da, b, c, d
  • 三次操作中,每一步是“加法”还是“乘法”,也就是操作符的顺序;
  • 以及他当时因为结果非常小而感到十分惊讶。

请你帮助 Welcome24ever 回忆这个数字:在给定最初四个数,以及三次操作符的顺序(每次只能从加法和乘法中选),通过合理选择每一步要“合并”的那一对数,使得最后结果尽可能小,并输出这个最小可能值。

输入格式

第一行包含四个整数 a,b,c,da, b, c, d0a,b,c,d10000 \le a, b, c, d \le 1000),表示最初写在黑板上的四个数。

第二行包含三个用空格分隔的符号,每个符号为 '+''*',依次给出三次操作中使用的运算类型:

  • '+' 表示该步操作必须使用加法;
  • '*' 表示该步操作必须使用乘法。

你可以在每一步任选当前仍在黑板上的两个数进行该步指定运算。

输出格式

输出一个整数,表示在给定运算顺序下,最终可能得到的最小结果

输入输出样例

  • 输入#1

    1 1 1 1
    + + *

    输出#1

    3
  • 输入#2

    2 2 2 2
    * * +

    输出#2

    8
  • 输入#3

    1 2 3 4
    * + +

    输出#3

    9

说明/提示

  • 由于中间及最终结果可能比较大,在 C++ 中建议使用 long long 存储结果。
首页