#P14904. [OOI2015预选赛long]Домашнее задание家庭作业

[OOI2015预选赛long]Домашнее задание家庭作业

题目描述

三十季之后,玛吉·辛普森终于上了一年级。为了练习书写,老师要求孩子们按某种顺序写下 NN 个数字,数字来自 09

经过几个小时的痛苦努力,玛吉终于完成作业,跑去和朋友们玩了,把作业本留在书桌上。这时,丽莎·辛普森走进房间。萨克斯吹得有些累的她正在寻找新的有趣事情,目光停在了玛吉写满数字的本子上。

丽莎很快算出了玛吉写下的所有数字之和。这时巴特冲进房间,给了她一个更有趣的任务:对这串数字进行 MM 次操作。巴特的想象力很有限,所以操作只有两种。

设字符串位置从左到右编号为 11NN。两类操作如下:

  1. 巴特给出 li,ril_i,r_i 和数字 cic_i,丽莎需要把位置 lil_irir_i(含两端)的所有数字都替换为 cic_i

  2. 巴特给出 li,ril_i,r_i,丽莎需要计算:在原字符串从 lil_irir_i 的子串中,所有作为其子串出现的十进制数之和。每个数要按出现次数计入,即它的十进制表示在该区间中出现几次就加几次。只统计合法的十进制表示,因此以 0 开头的子串不计入该和。

巴特今天很善良,所以对于第二类操作,他只要求丽莎输出答案对 109+710^9+7 取模的结果。

巴特自己并不知道正确答案,因此需要你帮忙。

输入格式

第一行包含两个整数 N,MN,M,表示玛吉写下的数字个数和巴特的操作数。

第二行包含 NN 个数字,每个数字在 0099 之间,以空格分隔。

接下来 MM 行描述操作:

  • 1 li ri ci 表示第一类操作,满足 1liriN1 \le l_i \le r_i \le N0ci90 \le c_i \le 9
  • 2 li ri 表示第二类操作,满足 1liriN1 \le l_i \le r_i \le N

输出格式

对每个第二类操作,输出一行答案对 109+710^9+7 取模后的结果。

如果没有第二类操作,则不需要输出任何内容。

数据范围

1N,M1000001 \le N,M \le 100000

样例

样例 1

4 3
1 2 1 3
2 1 3
1 3 3 0
2 2 4
158
228

样例 2

9 3
1 1 1 1 1 1 1 1 1
2 1 9
1 1 9 9
2 1 9
137174205
234567838

样例解释

第一个第二类操作的答案为:

1+12+121+2+21+1=1581+12+121+2+21+1=158。

第二个第二类操作的答案为:

2+20+203+0+3=2282+20+203+0+3=228。

注意其中项数较少,因为字符串 03 不是合法的十进制整数表示。

评分说明

组别 测试点 分值 附加限制 说明
0 1-2 0 - 样例测试
1 3-11 20 N,M50N,M \le 50
2 12-20 N,M400N,M \le 400
3 21-29 N,M2000N,M \le 2000
4 30-38 40 无附加限制 Offline 检查