CF2172G Gene Editor

题目描述

生物学家最近在一种特定的生物体中发现了一个有趣的现象。每个生物体都拥有仅由两种类型基因组成的基因序列,这两类基因分别用字符 A 和 B 表示。 这些生物体通过无性繁殖产生后代,通常后代会继承完全相同的基因序列。然而,由于复制过程中偶尔出现的克隆错误,可能会发生变异。生物学家观察到,这些错误可能以以下形式出现: 1. 在基因序列的任意位置插入子串 AA。 2. 从基因序列的任意位置移除子串 AA,剩余部分会按原有顺序拼接。 3. 在基因序列的任意位置插入子串 BBB。 4. 从基因序列的任意位置移除子串 BBB,剩余部分会按原有顺序拼接。 5. 在基因序列的任意位置插入特殊子串 $s$。 6. 从基因序列的任意位置移除子串 $s$,剩余部分会按原有顺序拼接。 这些变异在一次克隆事件中可能发生多次,并且总是按顺序、一次只进行一种。 例如,假设 $s = \texttt{ABAB}$。拥有基因序列 ABBABBA 的生物体可以通过如下变异过程,最终生成基因序列 A 的后代: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF2172G/6b4d365e24eb6d0aad9005d02e5f69239ef315f2365a92ae6268595d658afd41.png) 生物学家们现在拥有一个基因序列为 $t$ 的生物体。他们同时对所有长度为 $n$ 的基因序列的生物体感兴趣。由于序列中的每个位置都可以是 A 或 B,这样符合条件的生物体总数为 $2^n$ 个。 问题是:给定字符串 $s$、$t$ 和 $n$,在所有 $2^n$ 个长度为 $n$ 的基因序列中,有多少个可以通过一系列上述有效变异操作,从基因序列为 $t$ 的生物体得到? 由于答案可能非常大,请输出答案对 $998244353$ 取模后的结果。

输入格式

每组测例包含多个测试用例。第一行为测试用例个数 $q$。接下来为每个测试用例的详细信息: - 第一行为字符串 $s$,表示特殊子串。 - 第二行为字符串 $t$,表示起始基因序列。 - 第三行为整数 $n$,表示感兴趣的基因序列长度。 - $1 \le q \le 10$ - $2 \le |s| \le 11$ - $s$ 的第一个字符为 A。 - $s$ 的最后一个字符为 B。 - $s$ 中不存在两个连续的 A。 - $s$ 中不存在三个连续的 B。 - $1 \le |t| \le 10^5$ - $1 \le n \le 10^9$

输出格式

每个测试用例输出一行,表示答案对 $998244353$ 取模后的值。

说明/提示

由 ChatGPT 5 翻译