CF2114F.Small Operations
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给你两个正整数 x,k。进行以下两种变换之一称为一次操作:
- 选择一个满足 1≤a≤k 的正整数 a,使 x 变为 x⋅a;
- 选择一个满足 1≤a≤k 的正整数 a,使 x 变为 ax,要求操作完后 x 值是整数。
你需要找出使 x 变为给定正整数 y 的最小操作次数,或判断无解。
输入格式
第一行,一个正整数 t (1≤t≤104),表示测试数据组数。
对于每组测试数据,一行三个正整数 x,y,k (1≤x,y,k≤106)。
保证所有测试数据中 x 的总和与 y 的总和均不超过 108。
输出格式
对于每组测试数据,如果无解输出 −1,否则输出使 x 变为 y 的最小操作次数。
输入输出样例
输入#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=2,将 x 除以 2,然后选择 a=3,将 x 乘上 3,此时 x 将变为 6,等于 y。
对于第二组测试数据,可以证明其不可能。
对于第七组测试数据,我们可以分别选择 a=7,9,10,10,12,13,连续做 6 次乘法。可以证明没有比这更少的操作次数了。
输入解题思路,AI测评打分。不知道怎么写?