题目名称 | 3650. Powerful数 |
---|---|
输入输出 | powerful.in/out |
难度等级 | ★★ |
时间限制 | 1000 ms (1 s) |
内存限制 | 128 MiB |
测试数据 | 10 |
题目来源 | lihaoze 于2022-03-06加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:2, 提交:3, 通过率:66.67% | ||||
lihaoze | 100 | 0.000 s | 0.00 MiB | C++ |
yrtiop | 100 | 0.049 s | 0.48 MiB | C++ |
0429 | 0 | 0.000 s | 0.00 MiB | C++ |
关于 Powerful数 的近10条评论(全部评论) |
---|
如果一个数是 2 的次幂或是一个阶乘数,那么这个数被称为 Powerful 数。换句话说,如果对于一个数 $m$,存在一个非负整数 $d$,使得 $m = 2^d$ 或 $m = d!$,那么这个数 $m$ 是一个 Powerful 数
给定一个正整数 $n$,请找到一个最小的数 $k$,使得 $n$ 能够被表示为 $k$ 个 不同的 Powerful 数之和。
输入由若干行组成,第一行有一个正整数 $t(1 \le t \le 100)$,接下来 $t$ 行,每一行包括一个正整数 $n(1 \le n \le 10^{12})$。
输出 $t$ 组,如果 $n$ 不能被表示为 不同的 Powerful 数之和,输出一行 $-1$,否则,输出一行答案 $k$
4 7 11 240 17179869184
2 3 4 1
在第一组数据中,$7$ 能够被表示为 $7 = 1 + 6$,因为 $1$,$6$ 是Powerful数,所以最小的整数 $k$ 为 $2$
在第三组数据中,$240$ 能够被表示为 $240 = 24 + 32 + 64 + 120$,注意到 240 能够被表示为 $240 = 120 + 120$,但并不是一个合法的表示,因为表示 $240$ 的Powerful数必须是不同的。