evall(表达式求和)
题目描述
给你一个字符串 S。S 的每个字符都是 123456789+* 中的一个,且 S 的第一个和最后一个字符都是数字。S 中不存在相邻的非数字字符。
对于整数对 i,j(1≤i≤j≤∣S∣),定义 eval(Si..j) 如下:
- 如果 S 的第 i 个字符和第 j 个字符都是数字,则 eval(Si..j) 是将 S 的第 i 个到第 j 个字符(含两端)作为普通算术表达式求值的结果(其中
* 表示乘法)。例如,若 S= 1+2*151,则 eval(S1..6)=1+2×15=31。
- 否则,eval(Si..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+2*34
197
eval(Si..j) 不为 0 的情况如下:
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。
338*3338*33338*333338+3333338*33333338+333333338
527930018
数据范围
- 1≤∣S∣≤106
- S 的每个字符都是
123456789+* 中的一个。
- S 的第一个和最后一个字符都是数字。
- S 中不存在相邻的非数字字符。