CF1374B.Multiply by 2, divide by 6
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an integer n . In one move, you can either multiply n by two or divide n by 6 (if it is divisible by 6 without the remainder).
Your task is to find the minimum number of moves needed to obtain 1 from n or determine if it's impossible to do that.
You have to answer t independent test cases.
输入格式
The first line of the input contains one integer t ( 1≤t≤2⋅104 ) — the number of test cases. Then t test cases follow.
The only line of the test case contains one integer n ( 1≤n≤109 ).
输出格式
For each test case, print the answer — the minimum number of moves needed to obtain 1 from n if it's possible to do that or -1 if it's impossible to obtain 1 from n .
输入输出样例
输入#1
7 1 2 3 12 12345 15116544 387420489
输出#1
0 -1 2 -1 -1 12 36
说明/提示
Consider the sixth test case of the example. The answer can be obtained by the following sequence of moves from the given integer 15116544 :
- Divide by 6 and get 2519424 ;
- divide by 6 and get 419904 ;
- divide by 6 and get 69984 ;
- divide by 6 and get 11664 ;
- multiply by 2 and get 23328 ;
- divide by 6 and get 3888 ;
- divide by 6 and get 648 ;
- divide by 6 and get 108 ;
- multiply by 2 and get 216 ;
- divide by 6 and get 36 ;
- divide by 6 and get 6 ;
- divide by 6 and get 1 .