2572: 反抗希碧拉系统 续
题目描述
虽然一科的反抗行动失败了,但那次行动已使反抗希碧拉系统的观念深入人心,而作为分析官的你也找到了系统的某处漏洞,机会依然存在,你要为下一次反抗做好准备。
直接使用电磁脉冲破坏系统在上次被证明是不可行的,现在只能试图渗透进系统寻找突破口。你现在可以从漏洞监听到中枢中每个单元大脑间的通信,并筛选出其中符合某规则的一些进行更深入的分析。规则可以描述为一个特殊的正则表达式,有如下递归定义:
元素:=“[”+字符集+“]”,表示匹配字符集中的任意一个字符。“+”表示字符串的连接。
表达式:=元素或表达式+表达式或“(”+表达式+“)”+“+”。相连的表达式表示匹配连续的字符。“+”表示前面括号中的内容出现一次或多次。
例如:表达式[a]匹配ab;表达式[ab][c]匹配ac或bc;表达式([a])+([c])+可以匹配“abc”、“ababc”、“ababccc”等串。
你的同事决定使用巨型计算机穷举每个符合要求的定长字符串(通信)并分析其性质。你对这种方法持怀疑态度,较长的运算时间以及可能比中枢还大的耗电量必然会引起系统的怀疑。你需要计算有多少满足要求的字符串以估算计算所需时间,你坚信分析正则表达式作为一项分析官必备的技能并不会太困难。
输入
第一行一个字符串,表示该表达式。
第二行一个正整数M表示穷举的字符串的长度。
输出
一行,仅一个整数,表示符合要求的字符串数量对2^32取模。
样例输入 复制
[a](([b])+[c]([d])+[ad])+
5
样例输出 复制
2
提示
测试点编号 表达式中元素的个数 要求的字符串长度 额外限制
1,2 <=5 <=5 不含嵌套括号
3,4 <=5 <=500
5,6 <=5 <=500
7,8 <=3 <=1000000000 不含嵌套括号
9,10 <=3 <=1000000000 不含嵌套括号
11,12 <=3 <=1000000000
13,14 <=4 <=1000000000
15,16 <=5 <=1000000000 不含嵌套括号
17,18 <=5 <=1000000000
19,20 <=5 <=1000000000
对于所有数据另外满足以下条件
1:不存在空的[]或()
2:元素中的字符集没有重复字符
3:不存在连续的+,例如(([a])+)+
4:+前一定是),)后一定是+