#21. gcd 完备

gcd 完备

gcd 完备

所有输入均从 gcd.in 读取,所有输出均写入 gcd.out。

时间限制:44 秒。内存限制:256256 MiB。

题目描述

给定一个长度为 nn 的正整数序列 a1,a2,…,ana_1,a_2,\ldots,a_n,其中的数两两不同。

对于一个区间 [L,R][L,R],如果任选两个不同的位置 i,ji,j,其中 L≤i<j≤RL\le i<j\le R,都能在这个区间中找到一个位置 kk,使得 ak=gcd⁡(ai,aj)a_k=\gcd(a_i,a_j),就称 [L,R][L,R] 为完整段。这里 gcd⁡(x,y)\gcd(x,y) 表示 x,yx,y 的最大公约数,kk 可以等于 ii 或 jj。只包含一个元素的区间总是完整段。

有 qq 次询问。每次给定一个区间 [l,r][l,r],请你求出满足 l≤L≤R≤rl\le L\le R\le r 的完整段 [L,R][L,R] 的数量。

输入格式

第一行包含两个正整数 n,qn,q。

第二行包含 nn 个正整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

接下来 qq 行,每行包含两个正整数 l,rl,r,表示一次询问。

输出格式

输出 qq 行,每行一个整数,按照输入顺序给出每次询问的答案。

样例

样例 1

输入:

4 3
6 2 3 1
1 3
1 4
2 4

输出:

4
8
5

对于第一个询问,三个只含一个元素的区间都是完整段,[1,2][1,2] 也是完整段,因此答案为 44。

区间 [2,3][2,3] 不是完整段,因为 gcd⁡(2,3)=1\gcd(2,3)=1,而这个区间中没有 11。

附加样例

样例 2 见 down/gcd2.in\texttt{down/gcd2.in} 与 down/gcd2.ans\texttt{down/gcd2.ans},满足测试点 5∼65\sim6 的限制。

样例 3 见 down/gcd3.in\texttt{down/gcd3.in} 与 down/gcd3.ans\texttt{down/gcd3.ans},满足测试点 7∼87\sim8 的限制。

样例 4 见 down/gcd4.in\texttt{down/gcd4.in} 与 down/gcd4.ans\texttt{down/gcd4.ans},满足测试点 9∼129\sim12 的限制。

样例 5 见 down/gcd5.in\texttt{down/gcd5.in} 与 down/gcd5.ans\texttt{down/gcd5.ans},满足测试点 17∼2017\sim20 的限制。

数据范围

测试点编号 n≤n\le q≤q\le max⁡ai≤\max a_i\le 特殊性质
1∼41\sim4 5050 4×1054\times10^5 无
5∼65\sim6 2×1052\times10^5 2×1052\times10^5 AA
7∼87\sim8 30003000 30003000 无
9∼129\sim12 2×1052\times10^5 4×1054\times10^5 BB
13∼1413\sim14 5×1045\times10^4 10510^5 无
15∼1615\sim16 10510^5 2×1052\times10^5
17∼2017\sim20 2×1052\times10^5 4×1054\times10^5

对于所有测试点,1≤n,q≤2×1051\le n,q\le2\times10^5,1≤ai≤4×1051\le a_i\le4\times10^5,a1,a2,…,ana_1,a_2,\ldots,a_n 两两不同,且每次询问满足 1≤l≤r≤n1\le l\le r\le n。

特殊性质 AA:对于任意 1≤i<j≤n1\le i<j\le n,至少有 ai∣aja_i\mid a_j、aj∣aia_j\mid a_i 中的一个成立。

特殊性质 BB:每次询问都满足 l=1l=1。