AT_abc189_d [ABC189D] Logical Expression
题目描述
给定 N 个字符串 S1,…,SN,每个字符串为 AND 或 OR。
请计算有多少组 N+1 个变量 (x0,…,xN),每个变量的取值为 True 或 False,使得按照如下方式计算后,yN 的值为 True。
- y0=x0
- 当 i≥1 时,若 Si 为
AND,则 yi=yi−1∧xi;若 Si 为 OR,则 yi=yi−1∨xi
其中 a∧b 表示 a 与 b 的逻辑与,a∨b 表示 a 与 b 的逻辑或。
输入格式
输入以如下格式从标准输入读入:
N
S1
⋮
SN
输出格式
请输出答案。
输入输出样例 #1
输入 #1
2
AND
OR
输出 #1
5
输入输出样例 #2
输入 #2
5
OR
OR
OR
OR
OR
输出 #2
63
说明/提示
限制条件
- 1≤N≤60
- Si 为
AND 或 OR
样例解释 1
例如,当 $(x_0,x_1,x_2)=(\text{True},\text{False},\text{True})$ 时:
- y0=x0=True
- $y_1 = y_0 \land x_1 = \text{True} \land \text{False} = \text{False}$
- $y_2 = y_1 \lor x_2 = \text{False} \lor \text{True} = \text{True}$
因此 y2 的值为 True。
使 y2 为 True 的 (x0,x1,x2) 的组合共有:
- (True,True,True)
- (True,True,False)
- (True,False,True)
- (False,True,True)
- (False,False,True)
共 5 种。
样例解释 2
除了所有变量均为 False 的情况外,其余 26−1 种组合都能使 y5 为 True。
由 ChatGPT 4.1 翻译