#P1025. [QY-004-Div.3] B.定义宏的读取实现

[QY-004-Div.3] B.定义宏的读取实现

题目描述

#define 是一个非常常用的预处理语句,用于定义宏,常见用法为:

#define 常量 参数
#define 原串 处理串

用法相当多样,在本题中只会有如下格式:

#define a 114514
//即一个小写字母变量与一个 int 范围内的正整数作为参数。
#define Plus(a) a+a
//即一个类似函数的原串与一个只有一个运算符的处理串。

这里的运算符仅包括 +-*/,前后仅可能为函数内的变量或一个正整数(运算符前后至少有一个函数内变量)。

现在给定 mm#define 语句,以及一个运算串 ss,现在需要你输出 ss 的值。

  • ss 是一个形如 a+b 式的无空格字符串。

  • ab 只会是正整数、#define 中定义的常量、#define 中定义的函数串(函数串括号中只会是正整数或 #define 中定义的常量)。

  • + 只会是 +-*/之一。

  • 特别地,上述所有的 / 除法均向下取整,由于乘除法优先于加减法,为了方便处理,这里所有的函数串默认带有括号(即 x+y 表示 (x+y))。

输入格式

第一行一个正整数 mm

随后 mm 行,每行一个符合 #define 语句格式的串。

m+2m+2 行,一个形如 a+b 的字符串 ss

输出格式

一行一个正整数,表示 ss 的值。

输入输出样例 #1

输入 #1

2
#define a 114514
#define F(a) a*2
F(114)-a

输出 #1

-114286

输入输出样例 #2

输入 #2

2
#define p 1919810
#define P(x) x+x
P(p)/15

输出 #2

255974

说明/提示

对于 10%10\% 的数据有 m=0m = 0

对于另外 20%20\% 的数据有 m=1m = 1

对于 100%100\% 的数据有 0m20 \le m \le 2,且不会出现函数名与常量名的矛盾,字符串长度不大于 100100,变量、常量均为一个小写字母。

Tips

本题为了符合黄题难度已经削得不能再削了。

注意整行输入、long long 整型。