#P1820. Expression
Expression
本题没有可用的提交语言。
题目描述
根据定义,符号表达式是:
a) 自然数;
b) 由字母组成的名称,用来标识另一个符号表达式;
c) 由0个或多个符号表达式组成的列表,表达式之间用空格隔开,列表由圆括号括起来。一个由3个元素组成的符号表达式的示例如下:(A 2 (3 (B)))。
一个定义将一个名称分配给一个符号表达式,其形式为:
Name = SymbolicExpression
如果两个符号表达式E1和E2满足以下条件,则认为它们是等价的:
- E1是数字,E2是数字且它们的值相同;
- E1和E2是两个相等符号表达式的名称;
- E1和E2是等价的列表;如果两个列表相等,则它们包含相同数量的符号表达式,并且相应位置的表达式是等价的;
- 等价关系是传递的(如果表达式E1等价于E2,且E2等价于E3,则推导出E1等价于E3);
- 如果应用了规则a)-d)后无法决定表达式是否等价(或不等价),那么它们将被认为是等价的。
例如:
- 符号表达式 (1 2) 不等于 (2 1)。
- 符号表达式 (1 (2 3) 4) 和 (1 (2) (3 4)) 不等价。
对于以下定义:
A = B
B = (1 (2 abc))
abc = (1 34)
X = ((1 (2 abc)) (1 34))
Y = (A abc)
Z = (1 2 abc (1 34))
符号表达式 X 和 Y 是等价的,符号表达式 X 和 Z 不等价。
对于以下定义:
A = B
C = (D E)
B = (D E)
表达式 A 和 C 是等价的。
对于以下定义:
A 和 B 是等价的(根据规则e)。
一个查询用于测试两个符号表达式的等价性,其形式为:
Expression1 ? Expression2
查询的结果是0或1(如果表达式不等价,输出0;如果表达式等价,输出1)。
输入
输入包含多个符号表达式的定义,每个定义占一行,最后以“EOD”结束。之后是多个查询,每个查询占一行,以“EOE”结束。
输出
对于每个查询,输出一行,显示查询结果(0或1)。
示例输入1
A = 12
B = 13
BB = 12
Bbb = (12)
G = (1 (1 E))
c = (1 2 3)
D = (1 2 3)
dD = (1 2 6)
E = (1 E)
F = (1 E)
EOD
A ? B
A ? BB
C ? D
c ? DD
E ? E
F ? E
G ? E
BB ? bbb
EOE
示例输出1
0
1
1
0
1
1
1
0
数据来源
Romania OI 2002