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$ | 无限制 |