QOJ.ac

QOJ

実行時間制限: 2 s メモリ制限: 512 MB 満点: 100

#2270. 最大公约数的最小公倍数

統計

给定一个正整数序列,以及一系列对该序列进行的更新和查询操作。更新和查询以任意顺序给出。

每次更新操作会将序列中的某一项替换为给定的值。更新是累积的:后续的所有指令均在执行了之前的替换操作后的序列上进行。

每次查询操作指定了(可能经过更新后的)序列的一个子序列,以及需要从该子序列中排除的项数。根据排除项的不同,会产生一个或多个整数集合。每个集合都有其成员的最大公约数(GCD)。查询的答案是所有这些集合的 GCD 的最小公倍数(LCM)。

图 H.1. 样例输入 1 中最后一个查询 “Q 2 5 2” 的解答过程

输入格式

输入包含单个测试用例,格式如下:

$n \ m$ $a_1 \dots a_n$ $c_1$ $\vdots$ $c_m$

第一行包含两个整数 $n$ 和 $m$。$n$ ($1 \le n \le 10^5$) 是整数序列的长度,$m$ ($1 \le m \le 10^5$) 是指令的数量。原始整数序列 $a_1, \dots, a_n$ 在第二行给出。对于 $i = 1, \dots, n$,满足 $1 \le a_i \le 10^6$。接下来的 $m$ 行,每行要么是一个以字母 U 开头的更新指令,要么是一个以字母 Q 开头的查询指令。

更新指令格式如下:

$U \ j \ x$

该指令表示将序列中第 $j$ 项替换为整数 $x$。满足 $1 \le j \le n$ 且 $1 \le x \le 10^6$。更新是累积的:该指令之后的所有指令均在执行了该更新后的序列上进行。

查询指令格式如下:

$Q \ l \ r \ k$

其中,$l$ 和 $r$ 指定了子序列的起始和结束位置,$k$ 是从该子序列 $b_l, \dots, b_r$ 中需要排除的项数,其中 $b_1, \dots, b_n$ 是在执行完该查询之前的所有更新操作后的序列。满足 $1 \le l$,$0 \le k \le 2$,且 $l + k \le r \le n$。

输出格式

更新指令无需输出。对于每个查询指令,输出一行,内容为通过从序列 $b_l, \dots, b_r$ 中排除 $k$ 项所构成的所有子序列的集合的 GCD 的最小公倍数(LCM)。

样例

样例输入 1

5 10
12 10 16 28 15
Q 1 3 1
Q 3 4 0
Q 2 2 0
Q 2 5 2
U 3 21
Q 1 3 1
Q 2 4 1
Q 3 5 1
Q 4 4 0
Q 2 5 2

样例输出 1

4
4
10
20
6
14
21
28
210

说明

对于本测试用例的第一个查询 “Q 1 3 1”,子序列为 12 10 16。排除其中一项会产生三个集合:$\{12, 10\}$,$\{12, 16\}$ 和 $\{10, 16\}$。它们的 GCD 分别为 2,4 和 2,因此输出应为它们的 LCM,即 4。

注意,第五条指令 “U 3 21” 更新了序列,从而改变了第六条指令 “Q 1 3 1” 的答案。该更新使子序列变为 12 10 21。因此,排除一项后的集合变为 $\{12, 10\}$,$\{12, 21\}$ 和 $\{10, 21\}$。它们的 GCD 分别为 2,3 和 1,因此该查询的输出应为它们的 LCM,即 6。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.