题目描述
译自 CCO 2025 Day1 T3「Balanced Integer」。
由于 CCO 经常使用整数,Alice 需要学习有关整数的知识!一个正整数 n 可以用进制 b 表示为序列 dm−1dm−2…d1d0,如果满足以下条件:
- 每一位数字 di 在 0 到 b−1 之间(包含两端)。
- dm−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 下表示时,各位数字的平均值为 2b−1,则称 n 是 b-平衡的。例如,2025 是 19-平衡的,因为 35+11+11=9=219−1。
Alice 能轻松找到 19-平衡的整数。然而,她在寻找同时在多个进制下平衡的整数时遇到了困难。给定 B 和 N,请帮助 Alice 找到最小的整数 x,满足:
- 对于所有 2≤b≤B,x 是 b-平衡的。
- x≥N。
输入格式
第一行包含两个用空格分隔的整数 B 和 N (N≥1)。
保证答案不会超过 1018。
输出格式
输出问题描述中的最小整数 x。
4 100
141
141 在 2 进制下为 10001101。各位数字的平均值为 81+0+0+0+1+1+0+1=0.5=22−1。因此,141 是 2-平衡的。
141 在 3 进制下为 12020。各位数字的平均值为 51+2+0+2+0=1=23−1。因此,141 是 3-平衡的。
141 在 4 进制下为 2031。各位数字的平均值为 42+0+3+1=1.5=24−1。因此,141 是 4-平衡的。
最后,141≥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);
}
详细子任务附加限制及分值如下表所示。
| 子任务 |
分值 |
B 的限制 |
N 的限制 |
| 1 |
8 |
2≤B≤7 |
1≤N≤104 |
| 2 |
24 |
2≤B≤6 |
N=1010 |
| 3 |
8 |
2≤B≤7 |
无 |
| 4 |
36 |
8≤B≤11 |
N=1 |
| 5 |
16 |
B=8 |
无 |
| 6 |
8 |
9≤B≤11 |