#ATabc359d. [ABC359D] Avoid K Palindrome
[ABC359D] Avoid K Palindrome
题目描述
给定一个由 A、B、? 组成的长度为 的字符串 。
给定一个正整数 。如果一个仅由 A、B 组成的字符串 满足以下条件,则称 为好字符串:
- 的任意长度为 的连续子串中,都不存在回文串。
设 中包含 个 ?。将这 个 ? 分别替换为 A 或 B,一共可以得到 种不同的字符串。请你求出其中有多少种是好字符串。
由于答案可能非常大,请输出答案对 取模的结果。
输入格式
输入通过标准输入给出,格式如下:
输出格式
请输出答案。
样例 1
输入
7 4
AB?A?BA
输出
1
样例 2
输入
40 7
????????????????????????????????????????
输出
116295436
样例 3
输入
15 5
ABABA??????????
输出
0
样例 4
输入
40 8
?A?B??B?B?AA?A?B??B?A???B?BB?B???BA??BAA
输出
259240
说明/提示
限制条件
- 由
A、B、?组成 - 的长度为
- 均为整数
样例解释 1
给定的字符串中有 个 ?。将这 个 ? 分别替换为 A 或 B,一共可以得到如下 种字符串:
ABAAABAABAABBAABBAABAABBABBA其中,除了第一个ABAAABA,其余 个字符串都包含长度为 的回文子串ABBA,因此不是好字符串。故输出1。
样例解释 2
请注意,要求输出好字符串的个数对 取模的结果。
样例解释 3
也有可能无论如何替换 ? 都无法得到好字符串。
由 ChatGPT 4.1 翻译