题目描述
题目描述
给你一个表达式 S 如 2e+8-3e+5,表达式中每个字母表示一个变量。再给你这些变量的值,如 e 1 表示 。你被要求实现一个计算器,求出简化后的表达式和表达式的值。
表达式包括变量、运算数、运算符。变量用单个小写英文字母表示、运算数都是非负整数、运算符只包括加法减法和左右括号。
如果一个运算数紧跟在某个变量前面,表示它乘以后面的变量。例如 3a 表示 。但是运算数不会出现在括号前面,也就是不会有 3(2+5) 这样的式子。
在这个计算器之前,已经有一个程序,将所有类似 +a、-a 的项改成 +1a、-1a,所以本题中的表达式不会省略绝对值为 1 的运算数。
表达式按通常顺序进行求值:先是括号,然后求加法和减法。例如 -3a-(6-2a),化简结果是 -1a-6(输出时也不省略绝对值为 1 的系数);如果给你变量的值 a -4,最终答案是 −2。
输入格式
第 1 行,1个非负整数 n,表示表达式中出现变量的个数。
第 2∼n+1 行,每行一个字符和一个整数,表示每个变量的值。
第 n+2 行,一个字符串 S,表示要求值的字符串。
100% 数据:;变量的值;S 长度不超过 ,运算数不超过 。
输出格式
输出两行。
第一行输出表达式化简后的结果。按照变量字母的字典序从小到大输出每一项,常数项最后输出。
第二行输出代入变量的值之后、表达式的值。
样例输入
2
k 2
e 1
4e+3k+8-3e+5-6k-13
样例输出
1e-3k
-5
提示

100% 数据:;变量的值;S 长度不超过 ,运算数不超过 。
0
15+20-10
25
25
0
100-50+25
75
75
1
a 2
5a-10
5a-10
0