UOJ Logo AYIT Online Judge

AYITOJ

#130. 区间LCM

Statistics
时间限制:2s    内存限制:256MB    满分: 10分

题目描述

给你一个长度为 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$

题目来源

63213885