AT_abc338_g [ABC338G] evall

Description

[problemUrl]: https://atcoder.jp/contests/abc338/tasks/abc338_g 文字列 $ S $ が与えられます。$ S $ の各文字は `123456789+*` のいずれかで、$ S $ の先頭と末尾の文字は数字であり、$ S $ の中で数字でない文字どうしが隣接することはありません。 整数の組 $ i,\ j $($ 1\ \leq\ i\ \leq\ j\ \leq\ |S| $)に対して、$ \mathrm{eval}(S_{i..j}) $ を以下のように定義します。 - $ S $ の $ i $ 文字目と $ j $ 文字目がともに数字であれば、$ \mathrm{eval}(S_{i..j}) $ は $ S $ の $ i $ 文字目から $ j $ 文字目まで(両端含む)を通常の数式として評価した結果とする(`*` は乗算とする)。例えば、$ S\ = $ `1+2*151` のとき、$ \mathrm{eval}(S_{1..6})\ =\ 1\ +\ 2\ \times\ 15\ =\ 31 $ である。 - そうでなければ、$ \mathrm{eval}(S_{i..j}) $ は $ 0 $ とする。 $ {\displaystyle\ \sum_{i=1}^{|S|}\ \sum_{j=i}^{|S|}\ \mathrm{eval}(S_{i..j})} $ を $ 998244353 $ で割ったあまりを求めてください。

Input Format

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

Output Format

$ {\displaystyle\ \sum_{i=1}^{|S|}\ \sum_{j=i}^{|S|}\ \mathrm{eval}(S_{i..j})} $ を $ 998244353 $ で割ったあまりを出力せよ。

Explanation/Hint

### 制約 - $ 1\ \leq\ |S|\ \leq\ 10^6 $ - $ S $ の各文字は `123456789+*` のいずれかである。 - $ S $ の先頭と末尾の文字は数字である。 - $ S $ の中で数字でない文字どうしが隣接することはない。 ### Sample Explanation 1 $ \mathrm{eval}(S_{i..j}) $ が $ 0 $ でない場合は以下の通りです。 - $ \mathrm{eval}(S_{1..1})\ =\ 1 $ - $ \mathrm{eval}(S_{1..3})\ =\ 1\ +\ 2\ =\ 3 $ - $ \mathrm{eval}(S_{1..5})\ =\ 1\ +\ 2\ \times\ 3\ =\ 7 $ - $ \mathrm{eval}(S_{1..6})\ =\ 1\ +\ 2\ \times\ 34\ =\ 69 $ - $ \mathrm{eval}(S_{3..3})\ =\ 2 $ - $ \mathrm{eval}(S_{3..5})\ =\ 2\ \times\ 3\ =\ 6 $ - $ \mathrm{eval}(S_{3..6})\ =\ 2\ \times\ 34\ =\ 68 $ - $ \mathrm{eval}(S_{5..5})\ =\ 3 $ - $ \mathrm{eval}(S_{5..6})\ =\ 34 $ - $ \mathrm{eval}(S_{6..6})\ =\ 4 $ 以上の合計は $ 1+3+7+69+2+6+68+3+34+4\ =\ 197 $ です。