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