atcoder#ABC288F. [ABC288F] Integer Division

[ABC288F] Integer Division

配点 : 500500

問題文

1010 進表記で NN 桁の正整数 XX が与えられます。XX の各桁は 00 ではありません。 {1,2,,N1}\lbrace 1,2, \ldots, N-1 \rbrace の部分集合 SS に対し、f(S)f(S) を以下のように定義します。

XX1010 進表記したものを長さ NN の文字列とみなし、iSi \in S のとき、またそのときに限り文字列の ii 文字目と i+1i + 1 文字目に区切りを入れることで S+1|S| + 1 個の文字列に分解する。 このようにして得られた S+1|S|+1 個の文字列を 1010 進表記された整数とみなし、f(S)f(S) をこれら S+1|S|+1 個の整数の積で定める。

SS としてあり得るものは空集合を含めて 2N12^{N-1} 通りありますが、これら全てに対する f(S)f(S) の総和を 998244353998244353 で割った余りを求めてください。

制約

  • 2N2×1052 \leq N \leq 2 \times 10^5
  • XX1010 進表記で NN 桁で、各桁は 00 でない
  • 入力はすべて整数

入力

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

NN

XX

出力

答えを出力せよ。

3
234
418

S=S = \emptyset とすると、f(S)=234f(S) = 234 です。 S={1}S = \lbrace 1 \rbrace とすると、f(S)=2×34=68f(S) = 2 \times 34 = 68 です。 S={2}S = \lbrace 2 \rbrace とすると、f(S)=23×4=92f(S) = 23 \times 4 = 92 です。 S={1,2}S = \lbrace 1, 2 \rbrace とすると、f(S)=2×3×4=24f(S) = 2 \times 3 \times 4 = 24 です。 234+68+92+24=418234 + 68 + 92 + 24 = 418 であるため、418418 を出力します。

4
5915
17800
9
998244353
258280134