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