CF794G Replace All
题目描述
分析员 Igor 正在工作。他发现了文本编辑器中的一个“全部替换”功能。Igor 对工作感到无聊,于是他想出了如下问题:
给定两个仅由英文字母 'A' 和 'B' 组成的字符串 $x$ 和 $y$,一对字符串 $(s,t)$ 被称为“好对”,当且仅当:
- $s$ 和 $t$ 均由字符 '0' 和 '1' 组成。
- $1 \leq |s|, |t| \leq n$,其中 $|z|$ 表示字符串 $z$ 的长度,$n$ 是一个固定的正整数。
- 如果我们把 $x$ 和 $y$ 中所有的 'A' 替换为字符串 $s$,把所有的 'B' 替换为字符串 $t$,则最终由 $x$ 和 $y$ 得到的新字符串必须相等。
例如,若 $x = \mathrm{AAB}$,$y = \mathrm{BB}$ 且 $n=4$,那么 $(01, 0101)$ 是一个“好对”,因为替换后两个字符串均为 "01010101"。
字符串对 $x$ 和 $y$ 的“灵活度”定义为“好对”$(s,t)$ 的数量。注意“好对”是有序的,例如 $(0,1)$ 和 $(1,0)$ 被视为不同的对。
给定两个仅由字符 'A'、'B' 和 '?' 组成的字符串 $c$ 和 $d$,你可以把 $c$ 和 $d$ 中的每一个 '?' 替换为 'A' 或 'B',从而得到一组新的字符串对 $(c', d')$。请你求所有可能的 $(c', d')$ 的灵活度之和,结果对 $10^9+7$ 取模。
输入格式
第一行给出字符串 $c$($1 \leq |c| \leq 3 \cdot 10^5$)。
第二行给出字符串 $d$($1 \leq |d| \leq 3 \cdot 10^5$)。
最后一行给出一个整数 $n$($1 \leq n \leq 3 \cdot 10^5$)。
输出格式
输出一个整数,表示答案,对 $10^9+7$ 取模。
说明/提示
对于第一个样例,共有四组可能的 $(c', d')$。
- 若 $(c', d') = (\mathrm{AA}, \mathrm{A})$,则灵活度为 $0$。
- 若 $(c', d') = (\mathrm{AB}, \mathrm{A})$,则灵活度为 $0$。
- 若 $(c', d') = (\mathrm{AA}, \mathrm{B})$,则灵活度为 $2$,分别对应 $(1, 11)$ 和 $(0, 00)$ 两组二进制字符串是“好对”。
- 若 $(c', d') = (\mathrm{AB}, \mathrm{B})$,则灵活度为 $0$。
因此,总灵活度为 $2$。
对于第二个样例,所有长度不超过 $10$ 的二进制串共有 $2^1 + 2^2 + \cdots + 2^{10} = 2046$ 个,而所有 $(s, s)$ 这样的二进制串对均为“好对”。
由 ChatGPT 5 翻译