#HK5141. 「CCO 2025」Balanced Integer

「CCO 2025」Balanced Integer

题目描述

译自 CCO 2025 Day1 T3「Balanced Integer

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

  • 每一位数字 did_{i}00b1b-1 之间(包含两端)。
  • dm1>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}$。

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

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

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

  • 对于所有 2bB2 \leq b \leq Bxxbb-平衡的。
  • xNx \geq N

输入格式

第一行包含两个用空格分隔的整数 BBNN (N1)(N \geq 1)

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

输出格式

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

4 100

141

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

14114133 进制下为 1202012020。各位数字的平均值为 1+2+0+2+05=1=312\frac{1+2+0+2+0}{5} = 1 = \frac{3-1}{2}。因此,14114133-平衡的。

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

最后,141100141 \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 2B72 \leq B \leq 7 1N1041 \leq N \leq 10^{4}
22 2424 2B62 \leq B \leq 6 N=1010N=10^{10}
33 88 2B72 \leq B \leq 7
44 3636 8B118 \leq B \leq 11 N=1N=1
55 1616 B=8B=8
66 88 9B119 \leq B \leq 11