cf1374B. Multiply by 2, divide by 6

惯例,粘个生草翻译
cf1374B. Multiply by 2, divide by 6_第1张图片
注意数据范围,不能直接暴力求解
我们换个思路
被六整除一定被二和三同时整除
所以不被三整除的数一定不满足要求
如果被三整除
判断是否还被二整除(也就是被六整除)
是就num加一(操作一次)
否就加二(先乘二再除六)

看代码

#include
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		int num=0;
		while(n%3==0){
			if(n%2==0){
				num++;
				n/=6;
			}
			else{
				num+=2;
				n/=3;
			}
		}
		if(n>1){
			cout<<"-1"<<endl;
		}
		else
			cout<<num<<endl;
		
	}
	return 0;
} 

你可能感兴趣的:(题解,算法,c++)