#P15279. [MCO 2025] GCD Equality

[MCO 2025] GCD Equality

题目描述

巨龙 Evirir 找到了 nn 个正整数 a1,a2,…,ana_1, a_2, \ldots, a_n。它需要回答 qq 个形如 (l,r)(l, r) (1≤l≤r≤n1 \le l \le r \le n)的询问,每个询问的含义如下:

  • 构造数组 $b = [b_1, b_2, \ldots, b_{r-l+1}] = [a_l, a_{l+1}, \ldots, a_r]$。在一次操作中,Evirir 可以选择 bb 中相邻的两个整数,设为 bib_i 和 bi+1b_{i+1} (1≤i<r−l+11 \le i < r-l+1),并将它们替换为一个整数 gcd⁡(bi,bi+1)\gcd(b_i, b_{i+1})。要使 bb 中所有元素相等,最少需要多少次操作?

你能帮助它快速回答这些询问吗?

注意: gcd⁡(x,y)\gcd(x, y) 表示整数 xx 和 yy 的最大公约数(GCD)。例如, gcd⁡(18,12)=6\gcd(18, 12) = 6, gcd⁡(14,6)=2\gcd(14, 6) = 2, gcd⁡(9,14)=1\gcd(9, 14) = 1。参见 https://en.wikipedia.org/wiki/Greatest_common_divisor

输入格式

第一行包含两个以空格分隔的整数 nn 和 qq (1≤n≤60 0001 \le n \le 60\,000, 1≤q≤100 0001 \le q \le 100\,000)。

第二行包含 nn 个以空格分隔的整数 a1,a2,…,ana_1, a_2, \ldots, a_n (1≤ai≤60 0001 \le a_i \le 60\,000)。

接下来的 qq 行,每行包含两个整数 ll 和 rr (1≤l≤r≤n1 \le l \le r \le n),代表一个询问。

输出格式

按顺序对于每个询问,输出一行一个整数作为答案。

10 6
36 24 120 24 36 60 48 24 24 9
1 7
2 4
6 10
6 8
8 9
10 10
4
1
4
2
0
0

提示

注释

示例 1

对于第一个询问(1 7\texttt{1 7}), b=[36,24,120,24,36,60,48]b = [36, 24, 120, 24, 36, 60, 48]。一种最优解法如下(被选中的元素以 下划线‾\underline{下划线} 标记,上一次操作产生的新元素以 粗体\textbf{粗体} 标记):

  • [36,24,120,24‾,36,60,48][36, 24, \underline{120, 24}, 36, 60, 48]: gcd⁡(120,24)=24\gcd(120, 24) = 24
  • [36,24,24,36,60,48‾][36, 24, \mathbf{24}, 36, \underline{60, 48}]: gcd⁡(60,48)=12\gcd(60, 48) = 12
  • [36,24‾,24,36,12][\underline{36, 24}, 24, 36, \mathbf{12}]: gcd⁡(36,24)=12\gcd(36, 24) = 12
  • [12,24,36‾,12][\mathbf{12}, \underline{24, 36}, 12]: gcd⁡(24,36)=12\gcd(24, 36) = 12
  • [12,12,12][12, \mathbf{12}, 12]

可以证明,无法在少于 44 次操作内使所有元素相等。

对于第二个询问(2 4\texttt{2 4}), b=[24,120,24]b = [24, 120, 24]。一种最优解法是 [24,120,24‾]→[24,24][24, \underline{120, 24}] \to [24, \mathbf{24}]。

对于第三个和第四个询问,可以不断合并直至只剩下一个元素。

对于第五个和第六个询问,bb 中所有元素已经相等。

计分

子任务 1 (88 分): n≤15n \le 15, q≤120q \le 120。

子任务 2 (1010 分): n,q≤300n, q \le 300。

子任务 3 (1313 分): n,q≤3000n, q \le 3000。

子任务 4 (1717 分): 对于所有 1≤i≤n1 \le i \le n, ai≤2a_i \le 2。

子任务 5 (99 分): 对于所有 1≤i≤n1 \le i \le n,存在某个整数 k≥0k \ge 0 使得 ai=2ka_i = 2^k。

子任务 6 (77 分): q=nq = n,且对于所有 1≤i≤q1 \le i \le q,第 ii 个询问是 (1,i)(1, i)。

子任务 7 (2626 分): 对于所有 1≤i≤n1 \le i \le n, ai≤36a_i \le 36。

子任务 8 (1010 分): 无额外限制。

翻译由 DeepSeek 完成