恒等有理式 Beta Round #6 (「思考熊」杯 NOI模拟赛 )
描述
给定两个有理式f(X)与g(X),判断他们是否恒等(任意A,如果f(A)与g(A)均有定义,那么f(A)=g(A))。
有理式通过他们的中缀表达式给出,为了简化问题,我们对给出的中缀表达式进行如下的规范:
- 该表达式仅包含a-z0-9.+-*/^(),其中a-z用来表示未知数,0-9.用来表示数字常量,+-*/^是运算符,()用来改变运算顺序;
- 所有的运算符(+-*/^)都只作二元运算符使用,包括-;(即是说,-不被当作表示负数的单目运算符使用)
- 所有的运算符(+-*/^)都是左结合的,包括^;(即是说,^不是右结合的。x^a^b应当作(x^a)^b计算而不是x^(a^b))
- 表达式中的所有数字常量都是无符号的整数或者小数,即是说,是非空整数串或由.隔开的两个非空整数串,数字常量可能有前导零;
- 由于给出的是有理式,保证^的第二个运算数是自然数常量;
- 表达式中的未知数由小写字母a-z表示。
例如,下列的表达式在该规范下是合法的:
- x^2+2*x+1
- 1/(x+1)^2/(y+1)^2
而下面这些是不合法的:
- -x^2-2*x-1
- x^(4+5)
- x^(0-1)
他们在这个约定下的可能的合法表示是:
- 0-x^2-2*x-1
- x^9
- 1/x
输入格式
第一行,一个整数T,表示测试数据的组数。
接下来有T组数据,每组数据包含两行,每行给出了一个规范的有理式。
输出格式
对于每组数据输出一行,这行内的内容应当是"YES"或"NO"(不含引号),表示该组数据内的两个有理式恒等或是不等。
样例输入
4 (a+b)^2 a^2+2*a*b+b^2 1/x-1/y (y-x)/(x*y) x x+0.00000000000001 0.0000000001*0.00000000001*x (1/10)^21*x
样例输出
YES YES NO YES
数据范围与约定
共10个测试点,每个测试点10分。每个测试点的总字符个数不超过6*10^5。另外,各个测试点满足:
- 第1-3号测试点中不含小写英文字母
- 第4-6号测试点,每个测试点总字符数不超过1000
- 第7-10号测试点没有类似前两种数据的限制