#112. 表达式求值

表达式求值

题目描述

输入一个表达式,仅可能含有 阿拉伯数字+-*/, ^()。请计算表达式的值。

注:其中 / 取商的整数部分,^ 表示幂运算。

另外:

(1)负数可以加括号,也可以不加括号,如 1*(-5)1*-5 均有可能出现

(2)对于幂运算 a^b 不会出现 b 为负数的情况,也不会出现 a、b 均为 0 即 0^0 的形式。

(3)数据可能会出现多余括号情况,比如:

2*(((1+3)-4 的值为 0

2*(1+3)))-4 的值为 4

但不会出现非法括号情形,比如:

2*)(1+3)-4

输入

一行,一个表达式

输出

表达式的值;如果运算过程中出现了除以 0 的情形,则输出 division by zero

样例输入#1

-10-1*(-12+(7-5)^3^2))

样例输出#1

-510

样例输入#2

10-(((3/(1+2-3)

样例输出#2

division by zero

样例输入#3

3+1*-5)^2)^2^3))

样例输出#3

65536

提示

测试数据保证表达式运算中间结果及最终结果在 long long 范围内

数据范围

共 13 个测试点,每个测试点的表达式长度均不超过 1000。其中:

测试点 1-2:符号仅可能含有 + -

测试点 3-4:符号仅可能含有 + - * /

测试点 5-6:符号仅可能含有 + - * / ^

测试点 7-13:符号仅可能含有 + - * / ^ ( )