QOJ.ac

QOJ

Limite de temps : 8 s Limite de mémoire : 64 MB Points totaux : 100

#1821. Подсчет Ketek

Statistiques

Определим «Кетек» (Ketek) как предложение, которое читается одинаково в обоих направлениях, если рассматривать его по словам. Например, «fall leaves after leaves fall» является Кетеком, так как слова в обратном порядке образуют ту же последовательность, что и в исходном.

Дана строка, состоящая из строчных латинских букв и символа «?». Подсчитайте количество различных Кетеков, которые можно получить, заменив каждый символ «?» на строчную латинскую букву (одна буква на каждый «?») и, при желании, добавив пробелы между любыми буквами. Заметьте, что Кетек не может содержать символов «?»; все они должны быть заменены исключительно на строчные буквы.

Например, если мы начнем со строки «ababa», мы можем сформировать 3 различных Кетека: «ababa», «a bab a» и «a b a b a».

Если мы начнем со строки «?x?z», мы можем сформировать 703 различных Кетека:

  • Существует $26^2 = 676$ способов заменить «?» и сформировать однословный Кетек.
  • Добавим пробелы, чтобы получить «? x? z». Существует 26 способов сформировать Кетек (первый «?» должен быть z; второй может быть любой строчной буквой).
  • Добавим пробел, чтобы получить «?x ?z». Не существует способов сформировать Кетек.
  • Добавим пробелы, чтобы получить «? x ? z». Существует 1 способ сформировать Кетек (первый «?» должен быть z; второй должен быть x).

Итого: $676 + 26 + 0 + 1 = 703$.

Два Кетека считаются различными, если они содержат разное количество слов или если существует индекс слова, на котором слова различаются.

Входные данные

Единственная строка входных данных содержит строку $s$ ($1 \le |s| \le 30\,000$), состоящую из строчных латинских букв («a» – «z») и символа «?».

Выходные данные

Выведите количество различных Кетеков, которые можно сформировать, заменяя «?» на строчные буквы и добавляя пробелы. Так как это число может быть очень большим, выведите его по модулю $998\,244\,353$.

Примеры

Входные данные 1

ababa

Выходные данные 1

3

Входные данные 2

?x?z

Выходные данные 2

703

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.