「PMOI-5」公约数变换
题目描述
给出一个常数 $m$ 和长度为 $n$ 的序列 $a$。
定义一次「公约数变换」为:
先令 $b_i\leftarrow a_i+\gcd(m,a_1,...,a_i)$,最后令 $a_i\leftarrow b_i$。(注意是先把每个 $b_i$ 都算出来再一一赋值,而不是边算边赋值)
请问最少做几次「公约数变换」使得 $\forall i \in[1,n]$,$m|a_i$。
**可以证明一定有解。**
输入输出格式
输入格式
第一行两个整数 $n$ 和 $m$,表示序列长度和给出的常数。
接下来一行 $n$ 个整数,第 $i$ 个整数表示 $a_i$。
输出格式
一行一个整数,表示答案。
输入输出样例
输入样例 #1
5 5
5 4 3 2 1
输出样例 #1
4
输入样例 #2
10 6154
1 3 6 4 2 5 7 8 1 2
输出样例 #2
263
说明
【样例解释 1】
第一次「公约数变换」后的序列为 $10,5,4,3,2$。
第二次「公约数变换」后的序列为 $15,10,5,4,3$。
第三次「公约数变换」后的序列为 $20,15,10,5,4$。
第四次「公约数变换」后的序列为 $25,20,15,10,5$。
可以得出答案为 $4$。
【数据范围】
**本题采用捆绑测试。**
- Subtask1(5pts):$m=1$;
- Subtask2(10pts):$m=2$;
- Subtask3(10pts):$n=1$ 且 $m\le 500$;
- Subtask4(15pts):$n=1$;
- Subtask5(10pts):$n\le 5000$;
- Subtask6(20pts):$n\le 5\times 10^4$;
- Subtask7(10pts):$m,a_i\le 10^{9}$;
- Subtask8(20pts):无特殊限制;
对于 $100\%$ 的数据,$1\le n\le 10^{5}$,$1\le m\le 10^{14}$,$1\le a_i\le 10^{18}$。保证答案在 `long long` 范围内。