PID645 / 青青的作业批改
题目描述

青青是一个可爱的数学不错的小孩,所以他的数学老师任任决定叫青青帮他批改一些作业。最近青青他们学到了简单的表达式的写法。一个表达式E的规则是:

E : P | P ‘+’ E

P : F | F P

F : V | ‘(‘ E ‘)’

V : ‘a’ | ‘b’ | ‘c’ | … | ‘z’

用形象化的语言来说就是:V可以代表一个小写字母,例如a,而F可以由V或者用括号括着的表达式E组成,例如a,或者(a+b),P则可以单独由F或者直接将一个F和一个符合规则的P组成(此时表示的是乘法),例如(a+b)和(a+b)(a+b),其中后者表示将(a+b)与(a+b)相乘,甚至是(a+b)(a+b)(a+b),此时就是(a+b)的三次方了。最后E则可以单独由P或者用加号将某个P或E连接起来。

举例说明,a+b+c、a+(b+c)和(a+b)+c都是符合要求的,(a+b)c、(a)(b+c)、((a+b)(a+c)a(a+b)+(a+b))c之类的也是符合要求的,与平时我们使用的表达式是一样的。然而我们也知道,(a+b)+c = a+(b+c) = a+b+c,x(yz) = (xy)z = xyz,这说明有些时候括号是无用的,这些多余的括号让式子变得很不好看。不幸的是,因为是初学的缘故,青青的同学经常会多写一些乱七八糟的括号,这让青青很苦恼。他决定在批改作业时帮他们改正一下,输出最简单的式子,这样式子会显得很美观,也能让他的同学体会到式子的美感。不过这个工作量有些大,所以请你帮青青解决这个问题。

跟正常情况一样,表达式的运算规则是:括号有最高的优先级,其次是乘法,再次是加法。

输入格式

输入第一行是一个数T(1<=T<=100),表示给出的式子。

接下来是T行,每行是一个表达式,表示需要化简的表达式。保证每行长度不超过1000个字符。

注意:你不需要判断式子的正确性。

输出格式

对每个表达式输出一行,表示多余括号被去除后的最简式子。

样例输入
样例输出
提交题目 Error [ 更改语言 ] Language
C C++ Pascal Python2
相关讨论
查看更多讨论
发布新讨论 讨论