#P10587. 「ALFR Round 2」C 小 Y 的数

「ALFR Round 2」C 小 Y 的数

题目描述

小 Y 非常喜欢 4242 这个数,于是他也喜欢以 4242 为初始数,然后往后面依次拼接 4,24,2 的数,如 42,424,4242,⋯42,424,4242,\cdots。小 Y 给了你一个大小为 nn 的整数序列 aa,小 Y 有 mm 次操作,操作有四种:

  • 1 l r x 将 l∼rl\sim r 中的数加上 xx。

  • 2 l r x 将 l∼rl\sim r 中的数乘上 xx。

  • 3 l r x 将 l∼rl\sim r 中的数修改为 xx。

  • 4 l r 询问 l∼rl\sim r 中有多少个小 Y 喜欢的数。

输入格式

第一行两个整数 n,mn,m。

第二行 nn 个整数 a1,a2,a3⋯ana_1,a_2,a_3\cdots a_n。

接下来 mm 行,每行 33 或 44 个整数描述一次操作。

输出格式

每行一个操作 44 的答案。

8 8
41 42 43 44 45 46 47 47
4 1 8
1 1 8 377
4 1 8
2 1 1 100
1 1 8 624
4 1 7
3 1 8 424242
4 1 5
1
2
1
5

提示

样例解释

第 11 次操作为询问区间 1∼81\sim8 中有多少个小 Y 喜欢的数,共 11 个,为 a2a_2。

第 22 次操作为将区间 1∼81\sim8 中的数加上 377377,数列 aa 变为 418,419,420,421,422,423,424,424418,419,420,421,422,423,424,424。

第 33 次操作为询问区间 1∼81\sim8 中有多少个小 Y 喜欢的数,共 22 个,为 a7,a8a_7,a_8。

第 44 次操作为将区间 1∼11\sim1 中的数乘上 100100,数列 aa 变为 41800,419,420,421,422,423,424,42441800,419,420,421,422,423,424,424。

第 55 次操作为将区间 1∼81\sim8 中的数加上 624624,数列 aa 变为 42424,1043,1044,1045,1046,1047,1048,104842424,1043,1044,1045,1046,1047,1048,1048。

第 66 次操作为询问区间 1∼71\sim7 中有多少个小 Y 喜欢的数,共 11 个,为 a1a_1。

第 77 次操作为将区间 1∼81\sim8 中的数修改为 424242424242,数列 aa 变为 $424242,424242,424242,424242,424242,424242,424242,424242$。

第 88 次操作为询问区间 1∼51\sim5 中有多少个小 Y 喜欢的数,共 55 个,为 a1,a2,a3,a4,a5a_1,a_2,a_3,a_4,a_5。

数据范围

子任务 分值 限制
00 2020 n,m≤104n,m\le10^4
11 8080 -

对于 100%100\% 的数据,1≤n,m,ai,x≤5×1051\le n,m,a_i,x\le5\times10^5,1≤l,r≤n1\le l,r\le n。

保证每次操作后 1≤ai≤5×1051\le a_i\le5\times10^5。