P16509 [GKS 2015 #B] Albocede DNA
题目描述
Albocode 外星物种的 DNA 由 4 种核苷酸组成:a、b、c 和 d。不同的 Albocode 个体可能拥有不同的核苷酸序列,但任何 Albocode 的 DNA 序列都遵循以下所有规则:
* 它至少包含 a、b、c 和 d 各一份拷贝。
* 所有的 a 出现在所有 b 之前,所有的 b 出现在所有 c 之前,所有的 c 出现在所有 d 之前。
* 'a' 的数量与 'c' 的数量恰好相等。
* 'b' 的数量与 'd' 的数量恰好相等。
例如,abcd 和 aabbbccddd 是合法的 Albocode DNA 序列。acbd、abc 和 abbccd 则不是。
Albocode-n 是 Albocode 的一个进化物种。Albocode-n 的 DNA 序列由一个或多个合法的 Albocode DNA 序列首尾拼接而成。例如,abcd 和 aaabcccdaabbbccdddabcd 是合法的 Albocode-n DNA 序列。(注意,合法的 Albocode-n DNA 序列未必也是合法的 Albocode DNA 序列。)
在一次外星探险中,你找回了一段仅由 a、b、c 和 d 组成的有趣 DNA 序列。你想知道该序列的不同子序列中有多少是合法的 Albocode-n DNA 序列。(即使从原序列的不同位置选取核苷酸产生相同的合法子序列,它们仍被视为不同的子序列。)由于结果可能非常巨大,请将其对 $1000000007$($10^9+7$)取模。
输入格式
输入的第一行给出测试用例的数量 $T$。接下来的 $T$ 行每行包含一个仅由字符 a、b、c 和 d 组成的字符串 $S$。
输出格式
对于每个测试用例,输出一行包含 "Case #x: y",其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是第 $x$ 个测试用例的输出。
说明/提示
### 限制
$1 \le T \le 20$。
**小数据集(测试集 1 - 可见)**
$1 \le \text{length of S} \le 50$。
**大数据集(测试集 2 - 隐藏)**
$1 \le \text{length of S} \le 500$。
翻译由 DeepSeek V4 Pro 完成