evall
题目描述
给你一个字符串 S。S 的每个字符都是 1 到 9 或者 '+' 或 '*',且 S 的首尾字符是数字。S 中不存在相邻的非数字字符。
对于一对整数 i,j(1≤i≤j≤∣S∣),我们定义 eval(Si..j) 如下:
如果 S 的第 i 个和第 j 个字符都是数字,则 eval(Si..j) 是将第 i 到第 j 个字符(包括两端)作为通常的算术表达式(其中 ∗ 表示乘法)计算得到的结果。例如,如果 S=1+2∗151,那么 eval(S1..6)=1+2×15=31。
否则,eval(Si..j) 为零。
求 ${\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+2*34
197
338*3338*33338*333338+3333338*33333338+333333338
527930018
提示
1≤∣S∣≤106
S 的每个字符是 123456789+∗ 之一。
S 的首尾字符是数字。
S 中不存在相邻的非数字字符。以下区间其 eval(Si..j) 不为零:
eval(S1..1)=1
eval(S1..3)=1+2=3
eval(S1..5)=1+2×3=7
eval(S1..6)=1+2×34=69
eval(S3..3)=2
eval(S3..5)=2×3=6
eval(S3..6)=2×34=68
eval(S5..5)=3
eval(S5..6)=34
eval(S6..6)=4
这些值的和为 1+3+7+69+2+6+68+3+34+4=197.
标签: AtCoder|abc338G
来源
AtCoder|abc338G