#P9096. 「HNOI2021 省集 Day8」开心消消乐

「HNOI2021 省集 Day8」开心消消乐

题目描述

KewthOI 游戏两开花的神仙。最近他在 T****p 上找到一个新奇的消消乐游戏。这款游戏的目标是,将一串有着黑白两种颜色的球消除到只剩下一个球。若剩下的球是白色的则会获得游戏的胜利。

每次消除操作可以简化成依次执行下面几个步骤:

  1. 选择一段长度为正奇数的前缀 SS
  2. 然后从后往前依次取出 SS 的最后三个球,根据这三个球的颜色将其变成一个黑色或者白色的球并放回去。重复此步骤直到只剩下一个球。
  3. 将这个球放回到原来的序列前端。

其中,步骤二生成的球的颜色的确定规则会在每个关卡开始的时候给定。

现在这个消消乐开了夏活,活动关卡中,会在一些位置上放置“混沌球”,在你开始进行消除操作之前,你需要给每一个“混沌球”染上黑色或者白色。

Kewth 是一个善于思考的神,于是他就想,能不能算出有多少种给“混沌球”染色的方案,使得局面是可以获胜的?

打开了关卡后,Kewth10100s10^{-100}s 内就计算出了答案。为了证明你不比 Kewth1010010^{100} 倍,你需要在 1s1s 内计算出结果。

Kewth 知道凡人不希望计算过大的数字,于是你只需要告诉他你的答案对 998244353998244353 取模的结果就行了。

输入格式

game.in 中读入。

第一行一个正整数 TT,表示 Kewth 需要你计算一共 TT 个关卡。

接下来 TT 组关卡信息。这里我们使用 00 表示颜色为黑色的球,11 表示颜色为白色的球。每组关卡信息的第一行是一个长度为 8801 串,其中第 ii 个字符表示当从后往前取出的三个字符依次排列为 ii 的二进制表示(如,00001 进行一次步骤 22,取出的依次为 1,0,01,0,0,对应的 ii 即为 44)时,放回去的球是黑色还是白色。第二行是一个长度为 nn 的仅包含 01? 的字符串,表示当前关卡中黑球、白球、混沌球的排列顺序,保证 nn 为奇数。

输出格式

输出到 game.out 中。

对于每一个关卡,你都需要告诉 Kewth 你认为能获胜的局面数模 998244353998244353 的结果。

具体的,输出共 TT 行,每行一个非负整数,表示答案对 998244353998244353 取模的结果。

样例

样例 1

1
10001100
0000001
1

注意到有且仅有一种可能的给所有混沌球染色的方案。那么仅考虑这个情况,我们可以先选择一个长度为 55 的前缀 0000000000,将其消除:00000001100000\to001\to1,然后将 11 放回得到 101101。再进行一次消除即可得到 11

样例 2

1
11100111
???
6

样例 3、4

见附加文件中 game*.ingame*.ans

数据范围

对于所有数据,保证 1T101\le T\le 101n1051\le n\le 10^5nn 为奇数。

数据点编号 nn\le 特殊性质
1,2,31,2,3 2×1032\times 10^3
4,5,6,74,5,6,7 A\text{A}
8,9,10,118,9,10,11 B\text{B}
12,13,14,1512,13,14,15 10510^5 A\text{A}
16,17,18,1916,17,18,19 B\text{B}

特殊性质 A\text{A}:保证初始游戏局面不存在 ?

特殊性质 B\text{B}:保证消除规则为 00010111