#B261. 相等数组

相等数组

题目描述

Eve 有一个长度为 nn 的数组 aa,以及一个常数 m  (m≥2)m\;(m\ge 2)。 他知道数组满足

[ 2\le a_i\le m,\qquad 1\le i\le n . ]

Eve 觉得数组元素最终必须全部相等,于是他可以重复执行如下操作:

  • 任选一个整数 tt,满足 2≤t≤m2\le t\le m;
  • 把每个元素 aia_i 改成 gcd⁡(ai,t)\gcd(a_i,t)。

其中 gcd⁡(x,y)\gcd(x,y) 表示 x,yx,y 的最大公因数(例如 gcd⁡(4,6)=2\gcd(4,6)=2,gcd⁡(15,21)=3\gcd(15,21)=3)。

请你帮助 Eve 计算:最少需要多少次操作才能使数组中所有元素相等; 若无论进行多少次操作都无法达成目标,则输出 −1-1。

输入格式

  • 第一行一个整数 TT,表示测试数据组数。
  • 对于每组数据:
    1. 第一行两个整数 n,mn,m;
    2. 第二行给出 nn 个整数 a1,a2,…,ana_1,a_2,\dots,a_n。

输出格式

对每组数据,输出一行:

  • 若可行,输出最小操作次数(非负整数);
  • 否则输出 -1。

数据范围

覆盖比例 约束条件
30% ∑n≤20,  m≤20\displaystyle\sum n\le 20,\; m\le 20
60% ∑n≤3×105,  m≤1000\displaystyle\sum n\le 3\times10^{5},\; m\le 1000
100% 1≤T≤105,  1≤n≤105,  ∑n≤3×1051\le T\le10^{5},\;1\le n\le10^{5},\;\displaystyle\sum n\le3\times10^{5}2≤m≤106,  2≤ai≤m2\le m\le10^{6},\;2\le a_i\le m