Задача №115213. Обыкновенная задача про строки
Назовем две строки \(s\) и \(t\) эквивалентными, если для любой строки \(u\) длины 2, количество вхождений \(u\) в \(s\) совпадает с количеством вхождением \(u\) в \(t\). Таким образом, строки « aaaba », « abaaa » и « baaab » попарно эквивалентны между собой (строка « aa » входит два раза, строка « ab » один раз, строка « ba » один раз, строка « bb » не входит как подстрока), а строки « abb » и « bba » — нет.
В этой задаче вам будут даны \(Q\) строк, состоящих из символов « a », « b » и « c », для каждой из которых надо будет посчитать количество эквивалентных им непустых строк, также состоящих из символов « a », « b » и « c ». Так как это количество может быть очень большим, то надо вывести его остаток при делении на \(10^9+7\).
В первой строке входных данных дано число \(G\) — номер подзадачи, к которой относится текущий тест. Для теста из примера \(G = 0\).
На второй строке дано число \(q\) (\(1 \leq q \leq 10^5\)), затем следуют \(q\) строк, состоящих из символов « a », « b » и « c ». Суммарная длина строк не превышает \(10^6\).
Требуется вывести \(q\) целых чисел — для каждой строки необходимо вывести количество эквивалентных ей по модулю \(10^9+7\).
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены. За \(n_i\) обозначена длина \(i\)-й строки во входных данных, за \(L\) обозначена сумма длин строк, за \(w\) – максимальный ответ (не взятый по модулю) среди всех запросов.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке |
1 | 11 | строка \(s\) не содержит символов ' c ' | первая ошибка | |
2 | 13 | символы ' a ' и ' c ' в строке \(s\) не встречаются рядом | 1 | первая ошибка |
3 | 11 | \(n_i \leq 13\) | первая ошибка | |
4 | 10 | \(L \leq 40\) | 3 | первая ошибка |
5 | 9 | \(L \leq 60\) | 3, 4 | первая ошибка |
6 | 13 | \(w \leq 100\); \(L \leq 10^5\) | первая ошибка | |
7 | 33 | нет | 1–6 | первая ошибка |
Строке « abaa » эквивалентны строки « abaa », « aaba », « baab »;
Строке « abca » эквивалентны строки « abca », « bcab », « cabc »;
Строке « ccbca » эквивалентны строки « ccbca » и « cbcca »;
Строке « bacc » эквивалентна только строка « bacc ».
0 4 abaa abca ccbca bacc
3 3 2 1