CF1646C.Factorials and Powers of Two

传统题 文件IO:factorials 时间 2000 ms 内存 256 MiB 8 尝试 20 已通过 8 标签

Factorials and Powers of Two

题目描述

如果一个数是 22 的幂或阶乘,则称其为“强大数”。换句话说,如果存在非负整数 dd,使得 m=2dm=2^d 或 m=d!m=d!,那么数 mm 就是强大数(其中 d!=1⋅2⋅…⋅dd! = 1 \cdot 2 \cdot \ldots \cdot d,特别地,0!=10! = 1)。例如,11、44 和 66 都是强大数,因为 1=1!1=1!,4=224=2^2,6=3!6=3!,但 77、1010 或 1818 不是强大数。

给定一个正整数 nn,请你求出最小的正整数 kk,使得 nn 能表示为 kk 个互不相同的强大数之和。如果不存在这样的 kk,请输出 −1-1。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt(1≤t≤1001 \le t \le 100),表示测试用例的数量。

接下来每组测试用例仅一行,包含一个整数 nn(1≤n≤10121 \le n \le 10^{12})。

输出格式

对于每组测试用例,输出一行答案。

如果 nn 不能表示为若干个互不相同的强大数之和,输出 −1-1。

否则,输出一个正整数,表示最小可能的 kk。

说明/提示

在第一个测试用例中,77 可以表示为 7=1+67=1+6,其中 11 和 66 都是强大数。由于 77 不是强大数,所以最小的 kk 是 k=2k=2。

在第二个测试用例中,1111 可以表示为 11=1+4+611=1+4+6,且无法用两个或更少的强大数表示 1111。

在第三个测试用例中,240240 可以表示为 240=24+32+64+120240=24+32+64+120。注意 240=120+120240=120+120 不是有效表示,因为强大数必须互不相同。

在第四个测试用例中,17179869184=23417179869184=2^{34},所以 1717986918417179869184 是强大数,最小的 kk 是 k=1k=1。

由 ChatGPT 4.1 翻译

样例

4
7
11
240
17179869184
2
3
4
1

在线编程 IDE

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