题意介绍
给定一个数n,目标将他转化为m,每一步可以执行的操作是乘以2或乘以3,输出将n转换成m的操作次数,如果转换不了输出-1。
题意分析
先将m除以n,看是否为整数,如果是整数再继续判断是否可以被3整除或被2整除,记录相除的次数,如果出到最后为1则可以转换,否则不可以。
通过代码
#include<bits/stdc++.h>
using namespace std;
int n, m;
int main() {
cin >> n >> m;
int a = m / n;
if (n*a != m) cout << "-1" << endl;
else if (n == m) cout << "0" << endl;
else {
int ans = 0;
while (a != 1) {
int b = a / 3;
if (b * 3 == a) {
a = a / 3;
ans++;
}
else if(a%2==0){
a = a / 2;
ans++;
}
else {
cout << "-1" << endl;
return 0;
}
}
cout << ans << endl;
}
return 0;
}