SP6690 BOCOMP - A - Comparison Expressions
题目描述
**问题 A**
**比较表达式**
自动化编译器制造公司正在研制一种新的智能编译器。科学家们遇到的一个问题是如何判断两个表达式是否是等价的。一个表达式由一个或多个小写字母组成,表示变量,并用加号(+)或乘号(*)完全括起来。递归地,一个表达式可以是一个单独的变量,或者是一个形如 (E1 + E2) 或 (E1 \* E2) 的完全括号表达式,其中 E1 和 E2 也是表达式。比如,表达式可以是:a, (a+b), ((a\*b)\*b);而非表达式示例有:ab, a\*(b+c)。
两个表达式如果在对所有变量赋予任意整数值的情况下,都能得出相同的结果,就被认为是等价的。例如,((a+b)\*c) 和 ((b\*c)+(c\*a)) 是等价的,但 (a+(b\*c)) 和 ((a+b)\*c) 则不等价。你的任务是编写一个程序,判断给定的两个表达式是否等价。
输入格式
输入包含多组测试数据,每组数据占一行,由两个用空格分开的表达式组成。表达式中的变量以小写字母表示。每个表达式中变量出现的次数最多为 20 次(例如,((a+b)\*a) 中变量共出现三次)。因此,一个表达式最多由 77 个字符组成,包括变量、括号、加号和乘号。输入以一个只包含数字 0 的行结束。
输出格式
对于输入中的每组测试数据,输出一行。如果两个表达式等价,输出 Y;否则,输出 N。
**样例输入**
```
(a+(b\*c)) ((a+b)\*c)
((a+b)\*c) ((c\*b)+(a\*c))
0
```
**样例输出**
```
N
Y
```
**本翻译由 AI 自动生成**