#4986. evall

0

evall

evall

题目描述

给你一个字符串 SS。SS 的每个字符都是 1 到 9 或者 '+' 或 '*',且 SS 的首尾字符是数字。SS 中不存在相邻的非数字字符。 对于一对整数 i,ji, j(1≤i≤j≤∣S∣1 \leq i \leq j \leq |S|),我们定义 eval(Si..j)\mathrm{eval}(S_{i..j}) 如下:

如果 SS 的第 ii 个和第 jj 个字符都是数字,则 eval(Si..j)\mathrm{eval}(S_{i..j}) 是将第 ii 到第 jj 个字符(包括两端)作为通常的算术表达式(其中 ∗* 表示乘法)计算得到的结果。例如,如果 S=1+2∗151S = 1+2*151,那么 eval(S1..6)=1+2×15=31\mathrm{eval}(S_{1..6}) = 1 + 2 \times 15 = 31。 否则,eval(Si..j)\mathrm{eval}(S_{i..j}) 为零。

求 ${\displaystyle \sum_{i=1}^{|S|} \sum_{j=i}^{|S|} \mathrm{eval}(S_{i..j})}$,对 998244353998244353 取模。

输入格式

输入从标准输入给出,格式如下: SS

输出格式

输出 ${\displaystyle \sum_{i=1}^{|S|} \sum_{j=i}^{|S|} \mathrm{eval}(S_{i..j})}$,对 998244353998244353 取模。

1+2*34
197
338*3338*33338*333338+3333338*33333338+333333338
527930018

提示

1≤∣S∣≤1061 \leq |S| \leq 10^6 SS 的每个字符是 123456789+∗123456789+* 之一。 SS 的首尾字符是数字。 SS 中不存在相邻的非数字字符。以下区间其 eval(Si..j)\mathrm{eval}(S_{i..j}) 不为零:

eval(S1..1)=1\mathrm{eval}(S_{1..1}) = 1 eval(S1..3)=1+2=3\mathrm{eval}(S_{1..3}) = 1 + 2 = 3 eval(S1..5)=1+2×3=7\mathrm{eval}(S_{1..5}) = 1 + 2 \times 3 = 7 eval(S1..6)=1+2×34=69\mathrm{eval}(S_{1..6}) = 1 + 2 \times 34 = 69 eval(S3..3)=2\mathrm{eval}(S_{3..3}) = 2 eval(S3..5)=2×3=6\mathrm{eval}(S_{3..5}) = 2 \times 3 = 6 eval(S3..6)=2×34=68\mathrm{eval}(S_{3..6}) = 2 \times 34 = 68 eval(S5..5)=3\mathrm{eval}(S_{5..5}) = 3 eval(S5..6)=34\mathrm{eval}(S_{5..6}) = 34 eval(S6..6)=4\mathrm{eval}(S_{6..6}) = 4

这些值的和为 1+3+7+69+2+6+68+3+34+4=1971+3+7+69+2+6+68+3+34+4 = 197.

标签: AtCoder|abc338G

来源

AtCoder|abc338G