CF2114F.Small Operations

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给你两个正整数 x,kx,k。进行以下两种变换之一称为一次操作:

  • 选择一个满足 1≤a≤k1 \le a \le k 的正整数 aa,使 xx 变为 x⋅ax\cdot a;
  • 选择一个满足 1≤a≤k1 \le a \le k 的正整数 aa,使 xx 变为 xa\frac{x}{a},要求操作完后 xx 值是整数。

你需要找出使 xx 变为给定正整数 yy 的最小操作次数,或判断无解。

输入格式

第一行,一个正整数 t (1≤t≤104)t\ (1 \le t \le {10}^4),表示测试数据组数。

对于每组测试数据,一行三个正整数 x,y,k (1≤x,y,k≤106)x,y,k\ (1 \le x,y,k \le {10}^6)。

保证所有测试数据中 xx 的总和与 yy 的总和均不超过 108{10}^8。

输出格式

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

输入输出样例

  • 输入#1

    8
    4 6 3
    4 5 3
    4 6 2
    10 45 3
    780 23 42
    11 270 23
    1 982800 13
    1 6 2

    输出#1

    2
    -1
    -1
    3
    3
    3
    6
    -1

说明/提示

对于第一组测试数据,我们可以选择 a=2a=2,将 xx 除以 22,然后选择 a=3a=3,将 xx 乘上 33,此时 xx 将变为 66,等于 yy。

对于第二组测试数据,可以证明其不可能。

对于第七组测试数据,我们可以分别选择 a=7,9,10,10,12,13a=7,9,10,10,12,13,连续做 66 次乘法。可以证明没有比这更少的操作次数了。

输入解题思路,AI测评打分。不知道怎么写?

首页