表达式
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
小 C 热衷于学习数理逻辑。有一天,他发现了一种特别的逻辑表达式。在这种表达式中,所有操作数都是变量,取值只能为 或 ,运算从左往右进行;如果表达式中有括号,则先计算括号内的子表达式。表达式只有以下三种运算:
- 与运算:。当且仅当 和 的值都为 时,结果为 ;其余情况结果为 。
- 或运算:。当且仅当 和 的值都为 时,结果为 ;其余情况结果为 。
- 取反运算:。当且仅当 的值为 时,结果为 ;其余情况结果为 。
给定一个逻辑表达式和其中每个操作数的初始值。对于每次询问,将指定的一个操作数取反,并求此时原表达式的值。
表达式以后缀表达式的形式输入。操作数本身就是其后缀表达式;若 ,其后缀表达式为 ;若 ,其后缀表达式与 相同。运算符两侧均有一个空格,表达式末尾没有空格。操作数由小写字母 x 和一个正整数下标拼接而成,例如 x10 表示变量 。保证每个变量在表达式中恰好出现一次。
输入格式
从 expr.in 读入。
第一行包含一个字符串 ,表示后缀表达式。第二行包含一个正整数 ,表示变量个数;变量下标为 。第三行包含 个空格分隔的整数,第 个整数表示变量 的初值,取值为 或 。第四行包含一个正整数 ,表示询问数。接下来 行每行包含一个正整数,表示本次需要取反的变量下标。
每次询问的修改都是临时的,不影响之后的询问。保证表达式合法,变量初值为 或 。
输出格式
向 expr.out 输出 行,每行包含一个 或 ,表示对应询问下表达式的值。
样例
x1 x2 & x3 |
3
1 0 1
3
1
2
3
1
1
0
x1 ! x2 x4 | x3 x5 ! & & ! &
5
0 1 0 1 1
3
1
3
5
0
1
1
样例说明
样例 1 的中缀表达式是 。三次询问分别只取反一个变量,对应的初值依次变为 、、,表达式的值分别为 1、1、0。
样例 2 的中缀表达式是 $(!x_1)\ \&\ (!((x_2\ |\ x_4)\ \&\ (x_3\ \&\ (!x_5))))$。
数据范围与提示
对于 的数据,表达式中只有与运算符 & 或只有或运算符 |。
对于另外 的数据,,,。
对于另外 的数据,变量初值全部为 或全部为 。
对于 的数据,,,。