CF1374B.Multiply by 2, divide by 6

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Multiply by 2, divide by 6

题目描述

给定一个整数 nn。每一步操作,你可以将 nn 乘以 22,或者如果 nn 能被 66 整除,则可以将 nn 除以 66。

你的任务是找出将 nn 变为 11 所需的最少操作次数,或者判断是否无法做到这一点。

你需要回答 tt 个独立的测试用例。

输入格式

输入的第一行包含一个整数 tt(1≤t≤2⋅1041 \le t \le 2 \cdot 10^4),表示测试用例的数量。接下来有 tt 行,每行一个整数 nn(1≤n≤1091 \le n \le 10^9)。

输出格式

对于每个测试用例,输出一个答案——将 nn 变为 11 所需的最少操作次数;如果无法做到,则输出 −1-1。

说明/提示

以第六个样例 1511654415116544 为例,可以通过以下操作序列得到答案:

  1. 除以 66,得到 25194242519424;
  2. 除以 66,得到 419904419904;
  3. 除以 66,得到 6998469984;
  4. 除以 66,得到 1166411664;
  5. 乘以 22,得到 2332823328;
  6. 除以 66,得到 38883888;
  7. 除以 66,得到 648648;
  8. 除以 66,得到 108108;
  9. 乘以 22,得到 216216;
  10. 除以 66,得到 3636;
  11. 除以 66,得到 66;
  12. 除以 66,得到 11。

由 ChatGPT 4.1 翻译

样例

7
1
2
3
12
12345
15116544
387420489
0
-1
2
-1
-1
12
36

在线编程 IDE

建议全屏模式获得最佳体验