CF2114F Small Operations

题目描述

给你两个正整数 $x,k$。进行以下两种变换之一称为一次操作: - 选择一个满足 $1 \le a \le k$ 的正整数 $a$,使 $x$ 变为 $x\cdot a$; - 选择一个满足 $1 \le a \le k$ 的正整数 $a$,使 $x$ 变为 $\frac{x}{a}$,要求操作完后 $x$ 值是整数。 你需要找出使 $x$ 变为给定正整数 $y$ 的最小操作次数,或判断无解。

输入格式

第一行,一个正整数 $t\ (1 \le t \le {10}^4)$,表示测试数据组数。 对于每组测试数据,一行三个正整数 $x,y,k\ (1 \le x,y,k \le {10}^6)$。 保证所有测试数据中 $x$ 的总和与 $y$ 的总和均不超过 ${10}^8$。

输出格式

对于每组测试数据,如果无解输出 $-1$,否则输出使 $x$ 变为 $y$ 的最小操作次数。

说明/提示

对于第一组测试数据,我们可以选择 $a=2$,将 $x$ 除以 $2$,然后选择 $a=3$,将 $x$ 乘上 $3$,此时 $x$ 将变为 $6$,等于 $y$。 对于第二组测试数据,可以证明其不可能。 对于第七组测试数据,我们可以分别选择 $a=7,9,10,10,12,13$,连续做 $6$ 次乘法。可以证明没有比这更少的操作次数了。