题目描述
小易拿到了一个正整数 x ,他可以对 x做以下操作:
1.将x乘以5。
2.若x是6的倍数,将x除以6。
例如,18经过一次操作可以变成90,也可以变成3。
现在小易想知道,如果要把x变成y,至少需要操作多少次?一共有t组询问。
输入描述:
第一行输入一个正整数t(1≤t≤10000),代表询问次数。 接下来的t行,每行输入两个正整数x和y(1≤x,y≤109),代表一次询问。
输出描述:
输出t行。 对于每次询问,如果无法将x变成y,输出−1。否则输出操作次数。
示例1
输入
3 6 5 12 12 7 9
输出
2 0 -1
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int x, y;
cin >> x >> y;
int count = 0;
while (x != y) {
if (x < y) {
if (y % 5 != 0) {
count = -1;
break;
}
y /= 5;
} else {
if (x % 6 != 0) {
count = -1;
break;
}
x /= 6;
}
count++;
}
cout << count << endl;
}
return 0;
}