一个命题公式由以下文法生成:
<formula> ::= <variable> | ~<formula> | ( <formula> ) | <formula> <operator> <formula> <operator> ::= ^ | V <variable> ::= a-zA-Z (except character v)
其中 ^ 表示布尔与(AND),V 表示布尔或(OR)。
一个解释(interpretation)是指为公式中出现的所有变量分配真值。公式在某种解释下的真值可以通过按标准方式对变量值进行布尔运算来确定。
如果两个命题公式在所有可能的解释下都产生相同的真值,则称它们是等价的(equivalent)。
在你的实现中,不需要考虑运算符的优先级。例如,像 x ^ y V z 这样的公式会显式地表示为 (x ^ y) V z 或 x ^ (y V z) 之一。
输入格式
输入包含两个由上述文法生成的公式,分两行给出,由换行符分隔。
变量由英文字母表示,但字符 v 除外(因为 v 被保留用于表示“或”运算)。每个公式最多包含 51 个变量。输入中可以自由出现任意空格。
输出格式
如果这两个公式等价,输出 1;否则输出 0。
样例
输入格式 1
x ^ y y ^ x
输出格式 1
1
输入格式 2
A ^ (~y V z) (A^~y) V (A ^ z)
输出格式 2
1
输入格式 3
a V (b ^ ~b) V (c ^ ~c) a
输出格式 3
1
输入格式 4
~x ^ ~y ~(x V y)
输出格式 4
1
输入格式 5
a ^ b ^ c ^ d a V b V c V d
输出格式 5
0