【MX-X5-T2】「GFOI Round 1」Interstellar
题目背景
> [Interstellar - PIKASONIC](https://music.163.com/#/song?id=1900207101)
题目描述
你有一个正整数 $x$,你可以对它进行如下操作:
- 选择一个正整数 $y$,把 $x$ 变为它的 $\gcd(x, y)$ 倍,即 $x \gets x \times \gcd(x, y)$。
($\gcd(x, y)$ 表示 $x, y$ 的最大公因数。)
$x$ 的初始值为 $n$,你想通过若干次操作(也可不操作)将它变为 $m$。你想知道至少要多少次操作才能达成目标,或报告无解。
输入输出格式
输入格式
**本题有多组测试数据。**
第一行输入一个正整数 $T$,表示测试数据组数。
对于每组测试数据:
第一行包含两个正整数 $n, m$。
输出格式
对于每组数据:
- 若无解,即 $x$ 无论如何操作都不能变成 $m$,输出 $-1$。
- 否则输出一行一个非负整数,表示最小的操作次数。
输入输出样例
输入样例 #1
6
1 1
2 4
2 6
12 288
30 144000
114 5141919810
输出样例 #1
0
1
-1
2
3
-1
说明
**【样例解释】**
对于第一组数据,无需进行任何操作,答案是 $0$。
对于第二组数据,可以选择 $y = 6$,那么 $x$ 会变成 $2 \times \gcd(2, 6) = 4$。
对于第三组数据,容易证明无论如何进行操作都不可能达成目标,所以输出 $-1$。
对于第四组数据,可以:
- 选择 $y = 16$,那么 $x$ 会变成 $12 \times \gcd(12, 16) = 48$;
- 选择 $y = 6$,那么 $x$ 会变成 $48 \times \gcd(48, 6) = 288$。
**【数据范围】**
| 测试点编号 | $n \le$ | $m \le$ | 分值 |
| :-: | :-: | :-: | :-: |
| $1$ | $100$ | $2 \times 10^3$ | $21$ |
| $2$ | $2$ | $10^{18}$ | $17$ |
| $3$ | $10^5$ | $10^5$ | $14$ |
| $4$ | $10^7$ | $10^7$ | $16$ |
| $5$ | $10^{18}$ | $10^{18}$ | $32$ |
对于所有数据,满足 $1 \le T \le 2 \times 10^5$,$1 \le n \le m \le 10^{18}$。