難易度評価

難易度を1〜10段階で評価できます。投票はあとから変更・取り消しできます。

難易度(投票) 未投票 (0票)

投票の分布

まだ投票はありません。

  1. Lv.10票
  2. Lv.20票
  3. Lv.30票
  4. Lv.40票
  5. Lv.50票
  6. Lv.60票
  7. Lv.70票
  8. Lv.80票
  9. Lv.90票
  10. Lv.100票

難易度の目安を見る ↗

ログインして難易度を投票

外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

Palindrome Factorization

作成者 ei1333

難易度(作成者設定) Lv.8

難易度(投票) 未投票 (0票)

実行時間制限
2 秒
メモリ制限
512 MiB

問題文

長さ NN の英小文字 (a-z) からなる文字列 SS が与えられます。

SS の隣り合う文字の間にある N−1N - 1 箇所それぞれについて、仕切りを入れるか入れないか選び、SS を 11 個以上の空でない文字列に分割します。

分割して得られる文字列がすべて回文であるとき、その仕切りの入れ方を 良い入れ方 と呼びます。

良い入れ方 の総数を 998244353998244353 で割った余りを求めてください。

制約

  • NN は整数
  • 1≤N≤5×1051 \leq N \leq 5 \times 10^5
  • SS は英小文字 (a-z) からなる長さ NN の文字列

入力

入力は以下の形式で標準入力から与えられる。

NN SS

出力

11 行に答えを出力せよ。

サンプル 1

入力

3
aba

出力

2

aba と a|b|a の 22 通りです。

サンプル 2

入力

4
aaaa

出力

8

どのように仕切りを入れても、分割して得られる文字列はすべて回文です。

サンプル 3

入力

7
abacaba

出力

7

例えば、a|bacab|a は良い入れ方です。