P12968 [CCO 2025] Balanced Integer
题目背景
滥用评测资源的行为将直接被封号。
可在链接: 自测每个 Subtask 的前三个测试点,避免评测等待过长时间。
题目描述
由于 **CCO** 经常使用整数,**Alice** 需要学习关于整数的知识!一个正整数 $n$ 可以用基数为 $b$ 的数字序列 $d_{m-1}d_{m-2} \ldots d_{1}d_{0}$ 表示,当且仅当满足以下条件:
- 每个数字 $d_{i}$ 都在 $0$ 到 $b-1$ 之间(包含边界)。
- $d_{m-1} > 0$。
- $n = d_{m-1} \times b^{m-1} + d_{m-2} \times b^{m-2} + \cdots + d_{1} \times b^{1} + d_{0} \times b^{0}$。
例如,整数 $2025$ 在基数为 $19$ 时可以表示为序列 $(5,11,11)$,因为 $2025 = 5 \times 19^{2} + 11 \times 19^{1} + 11 \times 19^{0}$。
如果一个整数 $n$ 在基数为 $b$ 时,其各位数字的平均值等于 $\frac{b-1}{2}$,则称 $n$ 是 **$b$-平衡** 的。例如,$2025$ 是 **19-平衡** 的,因为 $\frac{5 + 11 + 11}{3} = 9 = \frac{19 - 1}{2}$。
**Alice** 可以轻松找到 **19-平衡** 的整数,但她难以找到同时在多个基数下平衡的整数。给定 $B$ 和 $N$,请帮助 **Alice** 找到最小的整数 $x$,满足以下条件:
- $x$ 在 **所有** $2 \leq b \leq B$ 的基数下都是 $b$-平衡的。
- $x \geq N$。
输入格式
第一行输入包含两个以空格分隔的整数 $B$ 和 $N$($N \geq 1$)。
保证答案不超过 $10^{18}$。
输出格式
输出题目描述中所要求的最小整数 $x$。
说明/提示
**样例 1 解释**
$141$ 在基数为 $2$ 时表示为 $10001101$,各位数字的平均值为:
$$\frac{1 + 0 + 0 + 0 + 1 + 1 + 0 + 1}{8} = 0.5 = \frac{2 - 1}{2}.$$
因此,$141$ 是 **2-平衡** 的。
$141$ 在基数为 $3$ 时表示为 $12020$,各位数字的平均值为:
$$\frac{1 + 2 + 0 + 2 + 0}{5} = 1 = \frac{3 - 1}{2}.$$
因此,$141$ 是 **3-平衡** 的。
$141$ 在基数为 $4$ 时表示为 $2031$,各位数字的平均值为:
$$\frac{2 + 0 + 3 + 1}{4} = 1.5 = \frac{4 - 1}{2}.$$
因此,$141$ 是 **4-平衡** 的。
最后,$141 \geq 100$。
你可以在解题时使用以下代码片段:
```cpp
// 注意:如果 x 为 0,结果未定义。
int base_2_length(unsigned long long x) {
return 64 - __builtin_clzll(x);
}
int base_2_sum(unsigned long long x) {
return __builtin_popcountll(x);
}
```
| 分值 | $B$ 的范围 | $N$ 的范围 |
|:------:|:------------------:|:----------------------:|
| 2 分 | $2 \leq B \leq 7$ | $1 \leq N \leq 10^4$ |
| 6 分 | $2 \leq B \leq 6$ | $N = 10^{10}$ |
| 2 分 | $2 \leq B \leq 7$ | 无限制 |
| 9 分 | $8 \leq B \leq 11$ | $N = 1$ |
| 4 分 | $B = 8$ | 无限制 |
| 2 分 | $9 \leq B \leq 11$ | 无限制 |