#P9229. 简单九连环
简单九连环
题目背景
提示:此题有大样例。
提示:本题中的九连环与传统九连环不同。
九连环是一种源于中国的传统智力游戏。如图所示,九个的圆环套在一把“剑”上,并且互相牵连。
在传统的九连环中,第 个环可以装上“剑”(记为 )或拆下“剑”(记为 ),当且仅当第 个环在剑上,且再之前的环不在剑上;特别地,第 个环可以任意上下。
本题中我们将会讨论更一般的情形,虽然这种简单九连环不一定可以在物理意义上造出。
题目描述
一个简单九连环,可以看作两个 01
串——规则串 和状态串 ,满足 。其中 表示第 个环是装上的, 表示第 个环是拆下的。
在同一局游戏中是不变的,而 每步会变化一个位置上的值(从 0
变成 1
或从 1
变成 0
)。简单九连环被拆下,当且仅当 全是 0
;简单九连环被装上,当且仅当 全是 1
。
简单九连环规定, 可以变化,当且仅当 是 的一个后缀。可以看出,传统的九连环就是 为 00...01
的特殊情形。
给出一个 ,问从拆下状态到装上状态至少需要几步,答案对 取模。
输入格式
第一行一个整数 ,表示 的长度。注意不是环的数量。
第二行一个 01
串 。
输出格式
一行一个整数,表示答案对 取模后的值。
3
011
6
8
00000001
341
见附件中的 samples/rings3.in
见附件中的 samples/rings3.ans
见附件中的 samples/rings4.in
见附件中的 samples/rings4.ans
提示
样例 1 解释
初始时刻所有环都不在简单九连环的剑上,状态串 为 0000
。
第 1 步装上第 个环, 变成 1000
。
第 2 步装上第 个环, 变成 1100
。
第 3 步装上第 个环, 变成 1110
。
接下来你不能直接装上第 个环,因为 111
并不是规则串 011
的后缀。因此第 4 步应拆下第 个环, 变成 0110
。
然后第 5 步装上第 个环, 变成 0111
。
最后一步装上第 个环, 变成 1111
,完成目标。
样例 2 解释
这就是传统的九连环,且恰好有 个环。
样例 3 解释
样例 3 满足测试点 的限制。
样例 4 解释
样例 4 满足测试点 的限制。
数据规模与约定
对于 的数据,,。
测试点编号 | 特殊性质 | |
---|---|---|
全为 0 |
||
末尾为 1 ,其余位置为 0 |
||