B - Multiply by 2, divide by 6
题意:这个题,对于一个n,你可以进行两种操作,一种是除以6(必须整除),一种是乘2。
题解:仔细分析一下,32=6,所以说,这个二的作用,就是把3变成6,这个步骤一合并,就相当于两步,第一步是把三变成6,第二部是把6变成1.
综上所述,一共有两个过程:
*1.直接把6变成1.(耗费1步)
2.把3先变成6,再把6变成1(耗费两步)**
/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 2e5+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 100000000;
using namespace std;
int main()
{
int t;
cin>>t;
while(t--){
int cnt1=0,cnt2=0;
while(n%6==0) n/=6,cnt1++;
while(n%3==0) n/=3,cnt2++;
if(n==1) cout<<cnt1+cnt2*2<<endl;
else cout<<-1<<endl;
}
return 0;
} 
京公网安备 11010502036488号