1387. 划分

时间限制 1000 ms   内存限制 128 MB

        Maple博士发明了一个对表达式进行操作的函数op(i,e)。其描述如下:         e是要操作的表达式。函数要将表达式分成若干个优先级最低的子表达式。例如:a*b+b*c+c*d经操作后变成了三个式子a*b,b*c,c*d,因为‘+’的优先级是最低的。函数先要把表达式做如上分离,再按次序取其中的第i个式子。例  如:op(2,a*b+b*c+c*d)=b*c.         很显然,这个函数有时是层层调用的,如:         p:=a^b*c+(d*c)^f*z+b         op(1,op(1,op(2,p)))=(d*c)            op(1,op(1,op(1,op(2,p))))=d*c         op(2,op(2,p))=z         op(3,p)=b         op(1,op(3,p))=b         Maple博士很懒,他把这任务交给了你,让你编出一个程序。         注:在本题中认为(a+b)(b+c)为合法表达式,若p:=(a+b)(b+c)则op(1,p)=a+b;而p:=(a+b)+(b+c)则op(1,p)=(a+b)

输入数据

&nbsp &nbsp &nbsp &nbsp 数据分为两部分,第一部分是表达式(不需判错)。先是一个变量的名称,再是一个" :=" 符号,再是表达式。
&nbsp &nbsp &nbsp &nbsp 表达式由小写字母和" +" ,&nbsp " (" ,&nbsp " )" ,&nbsp " " ,&nbsp " ^" 组成。括号优先级最高,接下来就是" ^" ,再下来是" " ,再是" +" 。
&nbsp &nbsp &nbsp &nbsp 下面就是要你算的几个op函数。先是函数个数n。
&nbsp &nbsp &nbsp &nbsp 下面n行是op的形式描述,由整数组成。
&nbsp &nbsp &nbsp &nbsp 例如:2&nbsp 1&nbsp 1表示op(1,op(1,op(2,e)))。怎样计算呢?先算op(2,e),再将结果带入下一步,算op(1,op(1,op(2,e)),再用同一方法算op(1,op(1,op(2,e)))。

输出数据

&nbsp &nbsp &nbsp &nbsp 看样例。。。

样例输入

复制
p:=a^b*c+(d*c)^f*z+b
4
2 1 1
2 2
3
3 1
                    \n
 \n
 · · \n
 · \n
 \n
 · \n

样例输出

复制
Expression p:
op(1,op(1,op(2,p)))=(d*c)
op(2,op(2,p))=z
op(3,p)=b
op(1,op(3,p))=b
          ·  \n
                         \n
               \n
         \n
               \n

样例说明

提交

请先 登录

Source

Tsuzuki  Matsumoto  From  ZJU

© 2024 FAQs Contact About