题目描述
记 1,2,...,n 中与 n 互质的数的个数为 φ(n)。
给定正整数序列 a1,a2,...,an, 请依次执行 q 个操作,操作有以下三种类型:
0 i x
: 修改 ai 的值为 x;
1 l r
: 查询 φ(al+a(l+1)+⋯+ar) 的值,对 109+7 取模后输出;
2 l r
: 查询 $\varphi(a_l \times a_{(l + 1)} \times \cdots \times a_r)$ 的值,对 109+7 取模后输出;
输入格式
第一行两个正整数 n,q。
第二行 n 个正整数 a1,a2,...,an。
接下来 q 行,每行三个整数 0 i x
, 1 l r
或 2 l r
。 保证 1≤i≤n, x∈N∗, 1≤l≤r≤n。
输出格式
对于每次形如 1 l r
或 2 l r
的操作,输出一行表示答案。
样例 #1
样例输入 #1
5 10
1 3 5 7 9
1 2 4
0 3 3
1 1 4
2 1 4
0 3 4
2 1 3
0 4 5
1 3 5
1 1 5
2 1 5
样例输出 #1
8
6
36
4
6
10
144
提示
样例解释
初始序列为 1,3,5,7,9,依次进行的 10 个操作如下:
- 查询 φ(3+5+7)=φ(15)=8,输出 8;
- 修改 a3 的值为 3,此时的序列为 1,3,3,7,9;
- 查询 φ(1+3+3+7)=φ(14)=6,输出 6;
- 查询 φ(1×3×3×7)=φ(63)=36,输出 36;
- 修改 a3 的值为 4,此时的序列为 1,3,4,7,9;
- 查询 φ(1×3×4)=φ(12)=4,输出 4;
- 修改 a4 的值为 5,此时的序列为 1,3,4,5,9;
- 查询 φ(4+5+9)=φ(18)=6,输出 6;
- 查询 φ(1+3+4+5+9)=φ(22)=10,输出 10;
- 查询 φ(1×3×4×5×9)=φ(540)=144,输出 144。
数据范围
每个测试点的数据规模及特点如下表:
测试点编号 |
n |
ai,x |
q |
包含的操作类型 |
1 |
≤5 |
≤10 |
1 |
2 |
3 |
2 |
4 |
5 |
0,1,2 |
6 |
≤500 |
≤1000 |
≤1000 |
7 |
8 |
≤5000 |
≤10000 |
0,1 |
9 |
≤5000 |
10 |
≤1000 |
0,1,2 |
11 |
≤3000 |
12 |
≤5000 |
13 |
≤50000 |
≤40000 |
≤50000 |
0,1 |
14 |
≤75000 |
15 |
≤100000 |
16 |
17 |
≤25000 |
0,1,2 |
18 |
≤50000 |
19 |
≤100000 |
20 |
表中“包含的操作类型”表示对应测试点中每个操作的第一个数的可能值,例如,包含的操作类型为“0,1”表示该测试点不会出现形如 2 l r
的操作。
对于全部测试点,n≤50000,q≤100000,操作 0 的个数不超过 20000,所有的 ai、操作 0 中的 i,x 及操作 1,2 中的 l,r 均在给定的限制下内均匀随机生成。