Week 10 作业 A - 签到题 CodeForces - 1141A
题目描述:
东东在玩游戏“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;
}

浙公网安备 33010602011771号