「ALFR Round 2」C 小 Y 的数
题目描述
小 Y 非常喜欢 $42$ 这个数,于是他也喜欢以 $42$ 为初始数,然后往后面依次拼接 $4,2$ 的数,如 $42,424,4242,\cdots$。小 Y 给了你一个大小为 $n$ 的整数序列 $a$,小 Y 有 $m$ 次操作,操作有四种:
- `1 l r x` 将 $l\sim r$ 中的数加上 $x$。
- `2 l r x` 将 $l\sim r$ 中的数乘上 $x$。
- `3 l r x` 将 $l\sim r$ 中的数修改为 $x$。
- `4 l r` 询问 $l\sim r$ 中有多少个小 Y 喜欢的数。
输入输出格式
输入格式
第一行两个整数 $n,m$。
第二行 $n$ 个整数 $a_1,a_2,a_3\cdots a_n$。
接下来 $m$ 行,每行 $3$ 或 $4$ 个整数描述一次操作。
输出格式
每行一个操作 $4$ 的答案。
输入输出样例
输入样例 #1
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
1
2
1
5
说明
### 样例解释
第 $1$ 次操作为询问区间 $1\sim8$ 中有多少个小 Y 喜欢的数,共 $1$ 个,为 $a_2$。
第 $2$ 次操作为将区间 $1\sim8$ 中的数加上 $377$,数列 $a$ 变为 $418,419,420,421,422,423,424,424$。
第 $3$ 次操作为询问区间 $1\sim8$ 中有多少个小 Y 喜欢的数,共 $2$ 个,为 $a_7,a_8$。
第 $4$ 次操作为将区间 $1\sim1$ 中的数乘上 $100$,数列 $a$ 变为 $41800,419,420,421,422,423,424,424$。
第 $5$ 次操作为将区间 $1\sim8$ 中的数加上 $624$,数列 $a$ 变为 $42424,1043,1044,1045,1046,1047,1048,1048$。
第 $6$ 次操作为询问区间 $1\sim7$ 中有多少个小 Y 喜欢的数,共 $1$ 个,为 $a_1$。
第 $7$ 次操作为将区间 $1\sim8$ 中的数修改为 $424242$,数列 $a$ 变为 $424242,424242,424242,424242,424242,424242,424242,424242$。
第 $8$ 次操作为询问区间 $1\sim5$ 中有多少个小 Y 喜欢的数,共 $5$ 个,为 $a_1,a_2,a_3,a_4,a_5$。
### 数据范围
| 子任务 | 分值 | 限制 |
| :----------: | :----------: | :----------: |
| $0$ | $20$ | $n,m\le10^4$ |
| $1$ | $80$ | - |
对于 $100\%$ 的数据,$1\le n,m,a_i,x\le5\times10^5$,$1\le l,r\le n$。
保证每次操作后 $1\le a_i\le5\times10^5$。