#HK5141. 「CCO 2025」Balanced Integer

「CCO 2025」Balanced Integer

题目描述

译自 CCO 2025 Day1 T3「Balanced Integer」。

由于 CCO 经常使用整数,Alice 需要学习有关整数的知识!一个正整数 nn 可以用进制 bb 表示为序列 dm−1dm−2…d1d0d_{m-1} d_{m-2} \ldots d_{1} d_{0},如果满足以下条件:

  • 每一位数字 did_{i} 在 00 到 b−1b-1 之间(包含两端)。
  • dm−1>0d_{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}$。

例如,整数 20252025 在 1919 进制下为序列 (5,11,11)(5, 11, 11),因为 $2025 = 5 \times 19^{2} + 11 \times 19^{1} + 11 \times 19^{0}$。

一个整数 nn 如果在进制 bb 下表示时,各位数字的平均值为 b−12\frac{b-1}{2},则称 nn 是 bb-平衡的。例如,20252025 是 1919-平衡的,因为 5+11+113=9=19−12\frac{5+11+11}{3} = 9 = \frac{19-1}{2}。

Alice 能轻松找到 1919-平衡的整数。然而,她在寻找同时在多个进制下平衡的整数时遇到了困难。给定 BB 和 NN,请帮助 Alice 找到最小的整数 xx,满足:

  • 对于所有 2≤b≤B2 \leq b \leq B,xx 是 bb-平衡的。
  • x≥Nx \geq N。

输入格式

第一行包含两个用空格分隔的整数 BB 和 NN (N≥1)(N \geq 1)。

保证答案不会超过 101810^{18}。

输出格式

输出问题描述中的最小整数 xx。

4 100

141

141141 在 22 进制下为 1000110110001101。各位数字的平均值为 1+0+0+0+1+1+0+18=0.5=2−12\frac{1+0+0+0+1+1+0+1}{8} = 0.5 = \frac{2-1}{2}。因此,141141 是 2-平衡的。

141141 在 33 进制下为 1202012020。各位数字的平均值为 1+2+0+2+05=1=3−12\frac{1+2+0+2+0}{5} = 1 = \frac{3-1}{2}。因此,141141 是 33-平衡的。

141141 在 44 进制下为 20312031。各位数字的平均值为 2+0+3+14=1.5=4−12\frac{2+0+3+1}{4} = 1.5 = \frac{4-1}{2}。因此,141141 是 44-平衡的。

最后,141≥100141 \geq 100。

7 10000000000

16926961207710

数据范围与提示

你可以使用以下函数作为你的代码的一部分。

// Important: If x is 0, the result is undefined.
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);
}

详细子任务附加限制及分值如下表所示。

子任务 分值 BB 的限制 NN 的限制
11 88 2≤B≤72 \leq B \leq 7 1≤N≤1041 \leq N \leq 10^{4}
22 2424 2≤B≤62 \leq B \leq 6 N=1010N=10^{10}
33 88 2≤B≤72 \leq B \leq 7 无
44 3636 8≤B≤118 \leq B \leq 11 N=1N=1
55 1616 B=8B=8 无
66 88 9≤B≤119 \leq B \leq 11