题目描述:
东东在玩游戏“Game23”。
在一开始他有一个数字n,他的目标是把它转换成m,在每一步操作中,他可以将n乘以2或乘以3,他可以进行任意次操作。输出将n转换成m的操作次数,如果转换不了输出-1。
思路:
如果可以转换则一定有m=K*n ,则K= (2^x) * (3^y) ,输出x+y的值即可。
代码:
#include <cstdio> #include <iostream> using namespace std; int N,M; void calc(int m,int dep) { if(m==1) { cout<<dep<<endl; exit(0); } if(m%3==0) calc(m/3,dep+1); if(m%2==0) calc(m/2,dep+1); } int main() { cin>>N>>M; if(M%N==0) calc(M/N,0); cout<<-1<<endl; return 0; }