CF1516D.Cut

提高+/省选-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

This time Baby Ehab will only cut and not stick. He starts with a piece of paper with an array aa of length nn written on it, and then he does the following:

  • he picks a range (l,r)(l, r) and cuts the subsegment al,al+1,…,ara_l, a_{l + 1}, \ldots, a_r out, removing the rest of the array.
  • he then cuts this range into multiple subranges.
  • to add a number theory spice to it, he requires that the elements of every subrange must have their product equal to their least common multiple (LCM).

Formally, he partitions the elements of al,al+1,…,ara_l, a_{l + 1}, \ldots, a_r into contiguous subarrays such that the product of every subarray is equal to its LCM. Now, for qq independent ranges (l,r)(l, r), tell Baby Ehab the minimum number of subarrays he needs.

这一次,Baby Ehab 只进行裁剪而不粘贴。他从一张写有长度为 nn 的数组 aa 的纸开始,然后执行以下操作:

  • 他选取一个区间 (l,r)(l, r),将子段 al,al+1,…,ara_l, a_{l + 1}, \ldots, a_r 裁剪下来,并移除数组其余部分;
  • 接着,他将该子段进一步裁剪成多个子区间;
  • 为了增添数论趣味,他要求每个子区间的元素之积等于其最小公倍数(LCM)。

形式化地说,他将 al,al+1,…,ara_l, a_{l + 1}, \ldots, a_r 的元素划分为若干连续子数组,使得每个子数组的元素乘积等于该子数组的 LCM。现在,对于 qq 个相互独立的区间 (l,r)(l, r),请告诉 Baby Ehab 所需子数组的最小数量。

输入格式

The first line contains 22 integers nn and qq (1≤n,q≤1051 \le n,q \le 10^5) — the length of the array aa and the number of queries.

The next line contains nn integers a1a_1, a2a_2, …\ldots, ana_n (1≤ai≤1051 \le a_i \le 10^5) — the elements of the array aa.

Each of the next qq lines contains 22 integers ll and rr (1≤l≤r≤n1 \le l \le r \le n) — the endpoints of this query's interval.

第一行包含两个整数 nn 和 qq(1≤n,q≤1051 \le n,q \le 10^5)—— 分别表示数组 aa 的长度和查询次数。

第二行包含 nn 个整数 a1a_1, a2a_2, …\ldots, ana_n(1≤ai≤1051 \le a_i \le 10^5)—— 表示数组 aa 的元素。

接下来的 qq 行,每行包含两个整数 ll 和 rr(1≤l≤r≤n1 \le l \le r \le n)—— 表示该次查询所对应的区间端点。

输出格式

For each query, print its answer on a new line.

对于每个查询,在新行中输出其答案。

输入输出样例

  • 输入#1

    6 3
    2 3 10 7 5 14
    1 6
    2 4
    3 5

    输出#1

    3
    1
    2

说明/提示

The first query asks about the whole array. You can partition it into [2][2], [3,10,7][3,10,7], and [5,14][5,14]. The first subrange has product and LCM equal to 22. The second has product and LCM equal to 210210. And the third has product and LCM equal to 7070. Another possible partitioning is [2,3][2,3], [10,7][10,7], and [5,14][5,14].

The second query asks about the range (2,4)(2,4). Its product is equal to its LCM, so you don't need to partition it further.

The last query asks about the range (3,5)(3,5). You can partition it into [10,7][10,7] and [5][5].

第一个查询针对整个数组。你可以将其划分为 [2][2]、[3,10,7][3,10,7] 和 [5,14][5,14] 三个子区间。第一个子区间的乘积与最小公倍数(LCM)均为 22;第二个子区间的乘积与 LCM 均为 210210;第三个子区间的乘积与 LCM 均为 7070。另一种可行的划分方式是 [2,3][2,3]、[10,7][10,7] 和 [5,14][5,14]。

第二个查询针对区间 (2,4)(2,4)。该区间的乘积等于其 LCM,因此无需进一步划分。

最后一个查询针对区间 (3,5)(3,5)。你可以将其划分为 [10,7][10,7] 和 [5][5] 两个子区间。

输入解题思路,AI测评打分。不知道怎么写?

首页