#P1371. 最小公倍数

最小公倍数

题目描述

给定长度为 nn 的序列 aia_i,你需要处理 mm 次操作:

  • 给出 x,yx, y,将 axa_x 修改为 yy
  • 给出 vv,求出存在多少二元组 (l,r)(l, r) 满足 1lrn1 \leq l \leq r \leq nv=lcm(al,al+1,,ar)v = \operatorname{lcm}(a_l, a_{l+1}, \cdots, a_r)

输入格式

第一行三个正整数 T,n,mT, n, m,其中 TT 代表测试点编号。特别地,对于所有样例,T=0T = 0

第二行 nn 个正整数 a1,a2,,ana_1, a_2, \cdots, a_n 表示序列 aia_i

接下来 mm 行,每行先输入一个整数 opop

如果 op=1op = 1,再输入两个整数 x,yx, y,代表一次修改。

如果 op=2op = 2,再输入一个整数 vv,代表一次查询。

输出格式

对于每个查询输出一行,包含一个整数,为合法区间数量。

0 12 9
1 1 4 5 1 4 1 9 1 9 8 10
2 20
1 11 4
2 20
1 5 14
2 20
1 9 19
2 9
1 8 10
2 20
14
15
4
3
5

样例 2

见选手目录下的 lcm/lcm2.inlcm/lcm2.ans

该样例数据范围满足测试点 172117 \sim 21

样例 3

见选手目录下的 lcm/lcm3.inlcm/lcm3.ans

该样例数据范围满足测试点 172117 \sim 21

数据范围

本题共 2525 个测试点,全部测试点满足 2n,m1052 \leq n, m \leq 10^5op{1,2}op \in \{1, 2\}1ai,v,y1091 \leq a_i, v, y\leq 10^91xn1 \leq x \leq n

对于所有编号为偶数的测试点,保证 ai,y20a_i, y \leq 20

测试点 nn \leq mm \leq 特殊限制
121 \sim 2 100100 11
343 \sim 4 10310^3
565 \sim 6 10410^4
787 \sim 8 10510^5
9129 \sim 12 10510^5 A
131613 \sim 16 B
172117 \sim 21 5×1045 \times 10^4
222522 \sim 25 10510^5

特殊限制 A:op=2op = 2

特殊限制 B:ai,ya_i, y 在所有可能的值中均匀随机生成。