表达式计算Ⅳ
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}转译自 [信息学奥赛一本通 0x18-2] 表达式计算 4 。
\hspace{15pt}对于给出的长度不超过 30 的数学表达式,其中的运算符仅包含加号( \texttt{+} )、减号( \texttt{-} )、乘号( \texttt{*} )、除号( \texttt{/} )、乘方( \wedge ),要求求出表达式的最终值。

\hspace{15pt}特别的,为了确保存在答案,我们有一些规约:
\hspace{23pt}\bullet\,数据可能会出现括号情况,还有可能出现多余括号情况;但是保证括号使用合法;
\hspace{23pt}\bullet\,数据保证不会出现 \geq 2^{31} 的答案,且计算过程不会得到小数;
\hspace{23pt}\bullet\,数据中不会直接出现负数,但是减法运算可能会出现负数。

输入描述:

\hspace{15pt}在一行上输入一个长度不超过 30 的字符串,代表表达式。
\hspace{15pt}保证表达式中仅包含数字、括号以及上述五个运算符。保证表达式合法,即括号成对出现,且括号内表达式合法。

输出描述:

\hspace{15pt}在一行上输出一个整数,代表表达式的计算结果。
示例1

输入

复制
((2+2)^(1+1))

输出

复制
16

说明

\hspace{15pt}在这个样例中,表达式为 (2+2)^{(1+1)} = 4^2 = 16
示例2

输入

复制
0-(2)+(2)/1^0

输出

复制
0

说明

\hspace{15pt}在这个样例中,表达式为 0-2+2 \div 1 = 0-2+2 = 0