#1211. 多米诺骨牌
多米诺骨牌
题目描述
有一排共 块瓷砖。每块瓷砖上应当标记有 0 或 1。然而,有些标记已经褪色看不清了。
目前这一排瓷砖用一个长度为 的字符串 来表示。 中的每个字符为 0、1 或 ?。你必须将所有的 ? 替换为 0 或 1。
在替换完成后,对于每一个 ,相邻的两块瓷砖 和 会构成一个“多米诺骨牌”,其“重量”定义为 。注意,相邻的两个多米诺骨牌会恰好共用一块瓷砖。如果任意两个相邻的多米诺骨牌都具有不同的重量,我们就称这排完整的瓷砖是合法的。
请你计算出,有多少种不同的方式将所有的 ? 进行替换,使得最终这排瓷砖是合法的。将答案对 取模后输出。
如果两种替换方式得到的最终字符串不同,则认为这两种方式是不同的。
输入格式
第一行包含一个整数 ()—— 测试用例的数量。
对于每个测试用例:
- 第一行包含一个整数 ()—— 瓷砖的数量。
- 第二行包含一个长度为 的字符串 ,其中 。
输出格式
对于每个测试用例,输出一行一个整数,表示合法的替换方式数量对 取模后的结果。
样例输入 1
4
2
??
5
0?1??
5
0?0??
8
00110011
样例输出 1
4
2
0
1
说明
样例解释
- 在第一个测试用例中,只有一个多米诺骨牌,所以任何填法都是合法的。合法的完整字符串为
00、01、10和11。 - 在第二个测试用例中,合法的完整字符串有
00110和01100。 - 在第三个测试用例中,不存在任何合法的完整字符串。
- 在第四个测试用例中,唯一的合法完整字符串就是它本身
00110011。
数据范围
- 对于所有测试点,保证 。
- 对于每个测试用例,保证 。
- 保证同一测试点内所有测试用例的 之和不超过 。
- 保证字符串 仅由
0、1、?组成。