#ABC338G. evall(表达式求和)

evall(表达式求和)

evall(表达式求和)

题目描述

给你一个字符串 SSSS 的每个字符都是 123456789+* 中的一个,且 SS 的第一个和最后一个字符都是数字。SS 中不存在相邻的非数字字符。

对于整数对 i,ji, j1ijS1 \le i \le j \le |S|),定义 eval(Si..j)\mathrm{eval}(S_{i..j}) 如下:

  • 如果 SS 的第 ii 个字符和第 jj 个字符都是数字,则 eval(Si..j)\mathrm{eval}(S_{i..j}) 是将 SS 的第 ii 个到第 jj 个字符(含两端)作为普通算术表达式求值的结果(其中 * 表示乘法)。例如,若 S=S = 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}) 为 0。

求 $\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

eval(Si..j)\mathrm{eval}(S_{i..j}) 不为 0 的情况如下:

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

338*3338*33338*333338+3333338*33333338+333333338
527930018

数据范围

  • 1S1061 \le |S| \le 10^6
  • SS 的每个字符都是 123456789+* 中的一个。
  • SS 的第一个和最后一个字符都是数字。
  • SS 中不存在相邻的非数字字符。
难度 省选/NOI-
通过率
尝试 0
已通过 0
ID
3192
类型
传统题
Time Limit
2000ms
Memory Limit
1024MiB
上传者
标签