#Q1302. 炼石计划NOIP模拟赛第13套题目T2 摆烂合唱

炼石计划NOIP模拟赛第13套题目T2 摆烂合唱

T2 摆烂合唱

题目信息

时间限制: 1s

空间限制: 256M

输入文件: binary.in

输出文件: binary.out

题目描述

二进制合唱是二进制中学每年迎新晚会的必备项目,二进制合唱由 nn 位同学和一个合唱队形组成,每位同学只需会唱 0 或 1 两个声调,合唱队形由 n1n-1 个确定的符号组成,每个符号是 and,or,xorand, or, xor 中的一个,每次合唱的最终声调是由每位同学的声调通过合唱队形,即 n1n-1 个符号运算得出的。

时过境迁,二进制中学的新同学们越来越聪明,但是越来越喜欢在集体活动中摆烂,因此二进制合唱逐渐演变成每位同学计算 ff 函数的一个活动。ff 函数的定义如下:对于第 ii 位同学,f(i)f(i) 表示当除了 ii 同学以外所有同学唱出的声调确定时, ii 同学唱出的声调为 0 和 1 两种状态下,合唱的最终声调不同的概率。

例如,由两位同学组成的合唱 x or yx\ or\ y,有 f(x)=12f(x)=\frac{1}{2},因为当 y=0y=0 时,xx 的两种声调会导致最终声调不相等;但当 y=1y=1 时,xx 无论唱出什么声调,都无法影响到合唱最终声调的值(最终声调始终为 1)。所以 xx 取 0 和取 1 两种状态导致合唱最终声调的值不相等的概率为 12\frac{1}{2}

再例如 x xor yx\ xor\ y,有 f(x)=1f(x)=1,因为无论 yy 的取值如何,xx 的取值不同时,x xoryx\ xor y 的值总是不同的。

每位同学都想知道自己的 f(i)f(i) 的值,结果对 998244353 取模。大家想在合唱摆烂而争相计算自己的 ff 函数,这何尝不是新版本的集体活动呢?

合唱队形由表达式 ExprExpr 组合而成:

  1. ExprExpr 可以是一个单独的变量(一位同学唱出的声调);
  2. 否则,ExprExpr 将表示成 (Expr1 op Expr2)(Expr1\ op\ Expr2),其中 Expr1Expr1Expr2Expr2 分别是表达式,opop 是一种运算符,输入保证不会省略任何括号(包括整个表达式外的括号)。

输入格式

第一行一个整数 nn,表示参与二进制合唱的同学数

第二行一个字符串 ss,表示给定的合唱队形,格式见题目描述。

ss 中,不存在空格,用 & 表示 and,用 | 表示 or,用 ^ 表示 xor,用 x\mathrm{x} 表示一个同学,保证 ss 中恰有 n1n-1 个符号和 nn 个同学,每个符号都有对应的括号限定运算的先后关系(即共有 n1n-1 对括号);

输出格式

nn 行,第 ii 行一个整数 f(i)f(i),代表给定的合唱队形中从左到右第 ii 个同学的 ff 值对 998244353 取模的结果。

样例

样例输入 1

4
((x^x)|(x&x))

样例输出 1

249561089
249561089
748683265
748683265

样例解释 1

输出的四个数分别为 34,34,14,14\frac{3}{4}, \frac{3}{4}, \frac{1}{4}, \frac{1}{4}

数据范围与提示

对于 100%100 \% 的数据:1n1051 \leq n \leq 10^5ss 是合法的二进制表达式,遵从题目描述和输入格式中的所有规定。

  • Subtask 1 (5 pts): n1n \leq 1
  • Subtask 2 (25 pts): n16n \leq 16
  • Subtask 3 (30 pts): n103n \leq 10^3
  • Subtask 4 (40 pts): 无特殊限制。