QOJ.ac

QOJ

حد الوقت: 8 s حد الذاكرة: 64 MB مجموع النقاط: 100

#1821. Ketek Counting

الإحصائيات

「Ketek」とは、単語単位で前から読んでも後ろから読んでも同じになる文のことである。例えば、「fall leaves after leaves fall」は、単語を逆順に並べても元の順序と同じになるため、Ketek である。

小文字と文字「?」からなる文字列が与えられる。すべての「?」を小文字に置き換え(「?」1つにつき1文字)、必要に応じて文字間にスペースを追加することで作成できる、異なる Ketek の総数を求めよ。なお、Ketek に「?」を含めることはできず、すべて小文字に置き換えなければならない。

例えば、文字列「ababa」から開始する場合、3つの異なる Ketek「ababa」、「a bab a」、「a b a b a」を作成できる。

文字列「?x?z」から開始する場合、703通りの異なる Ketek を作成できる。

  • 「?」を置き換えて1単語の Ketek を作る方法は $26^2 = 676$ 通りある。
  • スペースを追加して「? x? z」という形にする。Ketek を作る方法は 26 通りある(最初の「?」は z でなければならず、もう一方は任意の小文字でよい)。
  • スペースを追加して「?x ?z」という形にする。Ketek を作る方法はない。
  • スペースを追加して「? x ? z」という形にする。Ketek を作る方法は 1 通りある(最初の「?」は z、2番目は x でなければならない)。

合計は $676 + 26 + 0 + 1 = 703$ となる。

2つの Ketek は、単語数が異なる場合、またはある単語のインデックスにおいて単語が異なる場合に、異なるとみなされる。

入力

入力は1行で、小文字('a' – 'z')と文字「?」からなる文字列 $s$ ($1 \le |s| \le 30\,000$) が与えられる。

出力

「?」を小文字に置き換え、スペースを追加することで作成できる異なる Ketek の総数を出力せよ。この数は非常に大きくなる可能性があるため、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.