eval

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

给出一个表达式,其中运算符仅包含+,-,*,/,^(加 减 乘 整除 乘方)要求求出表达式的最终值

数据可能会出现括号情况,还有可能出现多余括号情况

数据可能会出现负数情况

输入描述:

仅一行,即为表达式

输出描述:

仅一行,既为表达式算出的结果
示例1

输入

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

输出

复制
16

备注:


赛高!我的最爱!直接把出题人卡你的地方手动改掉即可。

def deal(a):
    a = a.replace('^','**')
    a = a.replace(' ','')
    a = a.replace('()','')
    a = a.replace('/','//') #注意整除
    cnt = 0
    r = []
    for i in range(len(a)):
        if a[i] == '(':   cnt+=1
        elif a[i] == ')':
            if cnt == 0:    r.append(i)
            else:   cnt-=1
    la = list(a)
    for i in r: la.pop(i)
    n = len(la)
    cnt = 0
    l = []
    for i in range(n):
        if la[n - 1 - i] == ')':  cnt+=1
        elif la[n - 1 - i] == '(':
            if cnt == 0:  l.append(n - 1 - i)
            else:   cnt-=1
    for i in l: la.pop(i)
    a = ''.join(la)
    return a

s = input()
s = deal(s)
print(eval(s))