题目描述
给你一个长度为 n 的序列 A1, A2, ... , An。
随后有 q 次操作,每次操作将会是以下两种之一:
1 - 给定两个整数 x 和 k,你需要把 A[x] 的值改为 k。
2 - 给定两个整数 l 和 r,请输出区间[l, r]中所有合数的最小公倍数,由于此答案过大,请输出答案对 998244353 取模的结果。
(区间[l, r]是指 Al, Al + 1, Al + 2, ... , Ar - 1, Ar)
输入描述
第一行输入一个正整数 n,表示序列 A 的长度。
第二行输入 n 个正整数,分别表示序列 A1, A2, ... , An。
第三行输入一个整数 q,表示有 q 次操作。
随后 q 行,每行先输入一个正整数 t,
当 t == 1 时,再输入两个正整数 x 和 k,并执行操作1;
当 t == 2 时, 再输入两个正整数 l 和 r, 并执行操作2。
输出描述
输出若干行,对于每一个操作2单独输出一行,表示答案。(题目保证一定有操作2)
样例输入
8 6 3 2 1 3 8 8 5 3 2 1 8 1 3 9 2 1 8
样例输出
24 72
样例解释
第一次操作:区间 [1, 8] 中合数有 6,8,8,lcm(6, 8, 8) = 24
第二次操作:A[3] 的值修改为 9
第三次操作:区间 [1, 8] 中合数有 6,9,8,8,lcm(6, 9, 8, 8) = 72
(lcm 即为最小公倍数)
数据范围
对于 30% 的数据:
数据范围同下,但是保证对于每次操作2:询问的区间长度小于等于10,即 $r - l + 1 <= 10$
对于 100% 的数据:
$1 <= n <= 10 ^ {5};$
$1 <= a[i] <= 100;$
$1 <= q <= 10 ^ {5};$
$1 <= t <= 2$
$1 <= x <= n; 1 <= k <= 100;$
$1 <= l <= r <= n$