题目描述
小火车的 ddl 赶不完了,他不愿意也没时间去思考题目背景到底应该怎么写了。
有一种神奇的函数被称为布尔函数,它的定义域为所有长度为 n 的 01 数组,而值为 0 或 1。而有四种集合的元素都是布尔函数,它们被称为是 Z,P,D,A 集合。
- Z 集合的元素是所有满足 f(0,0,…,0)=0 的布尔函数。
- P 集合的元素是所有满足 f(1,1,…,1)=1 的布尔函数。
- D 集合的元素是所有满足 not(f(x1,x2,…,xn))=f(not(x1),not(x2),…,not(xn)) 的布尔函数。
- A 集 合 的 元 素 则 比 较 复 杂 , 它 们 都 得 满 足 若 f(x1,…,xi−1,a,xi+1,…,xn)=f(x1,…,xi−1,b,xi+1,…,xn) 则 f(y1,…,yi−1,a,yi+1,…,yn)=f(y1,…,yi−1,b,yi+1,…,yn) 其中的 i,a,b,x,y,n 都为任意值。
现在给你一个由 ZPDA^v!()\
几种字符组成的表达式,表示一个布尔函数组成的集合,其中 ^
表示交集,v
表示并集,!
表示补集,\
表示差集,!
的优先级要高于其余三种运算符,但比 ()
要低。请问这个集合中含有多少布尔函数?
输入格式
第一行一个整数 n,第二行一个字符串表示表达式,保证表达式合法。
输出格式
一行一个整数表示答案,答案对 1000003 取模。
样例
2
Z
8
数据范围与提示
令 L 表示表达式长度;
对于 20% 的数据 n=1,L≤5,无括号;
对于 50% 的数据满足 n≤4,L≤15,无括号;
对于 100% 的数据满足 n,L≤100。