AT_abc338_g [ABC338G] evall
题目描述
给定一个字符串 $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$ 取模后输出。
输入格式
输入为一行,包含一个字符串 $S$。
输出格式
输出 $ {\displaystyle\sum_{i=1}^{|S|}\sum_{j=i}^{|S|}\mathrm{eval}(S_{i..j})} $ 对 $998244353$ 取模的结果。
说明/提示
## 限制
- $1 \leq |S| \leq 10^6$
- $S$ 的每个字符都是 `123456789+*` 中的一个字符。
- $S$ 的首尾字符都是数字。
- $S$ 中不会有两个非数字字符相邻。
## 样例解释 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$。
由 ChatGPT 4.1 翻译