CF1516D Cut
题目描述
这一次,Baby Ehab 只会剪纸而不会粘贴。他开始时有一张纸,上面写着一个长度为 $n$ 的数组 $a$,然后他会进行如下操作:
- 他选择一个区间 $(l, r)$,将子段 $a_l, a_{l + 1}, \ldots, a_r$ 剪下来,移除数组的其他部分。
- 然后,他将这个区间再切分成若干个子区间。
- 为了增加一点数论的趣味,他要求每个子区间内所有元素的乘积必须等于它们的最小公倍数(LCM)。
形式化地说,他需要将 $a_l, a_{l + 1}, \ldots, a_r$ 划分为若干个连续的子数组,使得每个子数组的所有元素的乘积等于它们的最小公倍数。现在,对于 $q$ 个独立的区间 $(l, r)$,请你告诉 Baby Ehab 至少需要将该区间划分为多少个这样的子数组。
输入格式
第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 10^5$),分别表示数组 $a$ 的长度和询问的数量。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^5$),表示数组 $a$ 的元素。
接下来的 $q$ 行,每行包含两个整数 $l$ 和 $r$($1 \le l \le r \le n$),表示本次询问的区间端点。
输出格式
对于每个询问,输出一行答案。
说明/提示
第一个询问询问的是整个数组。你可以将其划分为 $[2]$、$[3,10,7]$ 和 $[5,14]$。第一个子区间的乘积和 LCM 都为 $2$,第二个子区间的乘积和 LCM 都为 $210$,第三个子区间的乘积和 LCM 都为 $70$。另一种可能的划分方式是 $[2,3]$、$[10,7]$ 和 $[5,14]$。
第二个询问询问的是区间 $(2,4)$。它的乘积等于它的 LCM,因此不需要再划分。
最后一个询问询问的是区间 $(3,5)$。你可以将其划分为 $[10,7]$ 和 $[5]$。
由 ChatGPT 4.1 翻译