luogu#P8155. 「PMOI-5」公约数变换

「PMOI-5」公约数变换

题目描述

给出一个常数 mm 和长度为 nn 的序列 aa

定义一次「公约数变换」为:
先令 biai+gcd(m,a1,...,ai)b_i\leftarrow a_i+\gcd(m,a_1,...,a_i),最后令 aibia_i\leftarrow b_i。(注意是先把每个 bib_i 都算出来再一一赋值,而不是边算边赋值)

请问最少做几次「公约数变换」使得 i[1,n]\forall i \in[1,n]maim|a_i

可以证明一定有解。

输入格式

第一行两个整数 nnmm,表示序列长度和给出的常数。
接下来一行 nn 个整数,第 ii 个整数表示 aia_i

输出格式

一行一个整数,表示答案。

5 5
5 4 3 2 1
4
10 6154
1 3 6 4 2 5 7 8 1 2

263

提示

【样例解释 1】

第一次「公约数变换」后的序列为 10,5,4,3,210,5,4,3,2
第二次「公约数变换」后的序列为 15,10,5,4,315,10,5,4,3
第三次「公约数变换」后的序列为 20,15,10,5,420,15,10,5,4
第四次「公约数变换」后的序列为 25,20,15,10,525,20,15,10,5
可以得出答案为 44

【数据范围】
本题采用捆绑测试。

  • Subtask1(5pts):m=1m=1
  • Subtask2(10pts):m=2m=2
  • Subtask3(10pts):n=1n=1m500m\le 500
  • Subtask4(15pts):n=1n=1
  • Subtask5(10pts):n5000n\le 5000
  • Subtask6(20pts):n5×104n\le 5\times 10^4
  • Subtask7(10pts):m,ai109m,a_i\le 10^{9}
  • Subtask8(20pts):无特殊限制;

对于 100%100\% 的数据,1n1051\le n\le 10^{5}1m10141\le m\le 10^{14}1ai10181\le a_i\le 10^{18}。保证答案在 long long 范围内。