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;
} 

  

posted @ 2020-05-20 12:05  菜鸡今天学习了吗  阅读(163)  评论(0编辑  收藏  举报