4731: EX中缀表达式(广东省重点中学信息学邀请赛普及组)

内存限制:512 MB 时间限制:2.000 S
评测方式:文本比较 命题人:
提交:0 解决:0

题目描述

(广东省重点中学信息学邀请赛 (GDKOI 2024 day2普及组 第二试)

规定:
    •  单个数字: 由若干数字(至少一个)连续拼接, 最后必须跟一个’.’ 字符(不含引号) 例如: 00123. 0. 789. 都是合法的数字
    •  单个操作符:由若干数字连续拼接,最后跟一个字符
    •  操作符的字符: 表示该操作符的操作。该字符必须是+、*、^ 之一,分别表示加法,乘法和乘方。特别约定0^0=1。
        例如:000000789+,123^,如果前面的数值合法,那么它们就都是合法的操作符
    •  操作符的数字:表示该操作符的优先级,优先级的取值是 [1, n] 之间的正整数,数字越大表示优先级越高。
    • 对于优先级相同的操作符,题目将给出一个长度为n的01串C,用于说明对应优先级的操作符之间,是左结合还是右结合。
    其中0表示左结合,1表示右结合。
    例如C=”111011”,其中第4个字符为’0’,表示优先级为4的操作符是左结合的。
    •  左结合:表示该运算符从左往右计算。下面给出左结合的例子:1.4+2.4^3.4^4. 等价于((1.4+2.)4^3.)4^4,其结果与 ((1+2)^3)^4相同。
    •  右结合:表示该运算符从右往左运算。下面给出右结合的例子:1.6+2.6^3.6^4. 等价于1.6+(2.6^(3.6^4.)) , 其结果与1+(2^(3^4))相同。
    •  中缀表达式:
        1. 单个数字是合法的中缀表达式
        2. 若A是合法的中缀表达式,则(A) 也是合法的中缀表达式
        3. 若A、B均是合法的中缀表达式,c是合法的单个操作符,则AcB也是合法的中缀表达式
        4. 其余情况均不合法
现在给出一个长度为n的01串C,用于说明,相同优先级的操作符之间,是左结合还是右结合。
给出一个中缀表达式,判断该表达式是否合法,不合法则输出”error”(不包括引号),合法则输出该表达式的值对998244353取模的结果。

输入

第一行一个正整数 n。
第二行一个长度为 n 的 01 串 C。
第三行一个字符串 S,表示一个中缀表达式。
保证表达式中不会存在空格。

输出

若中缀表达式不合法则输出”error”,否则输出该表达式的值对 998244353 取模的结果。

样例输入 复制

2
01
1.2+2.1^3.2*4.2^(5.2*6.)2+7.

样例输出 复制

243640717

提示

样例解释:
243640717=((1+2)^(3*(4^((5*6)+7))))mod998244353


数据范围:
特殊性质1:不会出现^字符。
特殊性质2:不会出现+和*字符。
特殊性质3:不会出现(和)。
对于8%的数据,n=1,1≤|S|≤100,且满足特殊性质1和特殊性质3。
对于另外8%的数据,n=1,1≤|S|≤100,且满足特殊性质1。
对于另外20%的数据,n=1,1≤|S|≤100,且满足特殊性质2和特殊性质3。
对于另外24%的数据,n=1,1≤|S|≤1000,且满足特殊性质2。
对于100%的数据,1≤n≤9,1≤|S|≤10000。