CF2190F Xor Product
题目描述
对于非负整数 $x, y$ 和正整数 $k$,定义 $S(x, y, k)$ 为所有 $(x + i) \oplus (y + j)$ 的集合,其中 $0 \le i, j < k$。形式化地:
$$
S(x, y, k) = \{ (x + i) \oplus (y + j) \mid 0 \le i, j < k \}
$$
这里 $\oplus$ 表示按位异或运算。
定义 $f(x, k)$ 为对于所有非负整数 $y$(即 $y \ge 0$),集合 $S(x, y, k)$ 的最大可能大小。
给定整数 $x$ 和 $k$,计算 $f(x, k)$。
输入格式
本题包含多组测试用例。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例数量。
接下来的 $t$ 行,每行包含两个整数 $x$ 和 $k$($1 \le x, k \le 10^{17}$)。
输出格式
对于每个测试用例,输出一个整数,即 $f(x, k)$ 的值。
说明/提示
在第一个样例中,由于 $k=1$,无论 $y$ 取何值,集合 $S$ 总是恰好包含一个元素。例如,若选取 $y=69$,则有 $S(67, 69, 1) = \{67 \oplus 69\} = \{6\}$,因此 $|S(x, y, k)| = 1$。
在第二个样例中,$x=7$,$k=3$。最优的 $y$ 取值是 $8$。$(x + i) \oplus (y + j)$ 的所有值为:
$$
[7 \oplus 8, 7 \oplus 9, 7 \oplus 10, 8 \oplus 8, 8 \oplus 9, 8 \oplus 10, 9 \oplus 8, 9 \oplus 9, 9 \oplus 10]
$$
简化后是 $[15, 14, 13, 0, 1, 2, 1, 0, 3]$。不同的取值为 $S(7,8,3)=\{0,1,2,3,13,14,15\}$,其大小为 $7$。可以证明没有其他 $y$ 能得到更大的集合。实际上选择 $y$ 很重要,如果你取 $y=22$,则 $S(7,22,3)=\{16,17,30,31\}$,其大小仅为 $4$,并不最优。
在第六个样例中,经过无数次计算,我们终于推算出最优的 $y$ 是 $278\,302\,368\,699\,121\,665$,最终的答案是 $398\,158\,383\,604\,301\,822$。证明过程留作读者的一个简单练习。
由 ChatGPT 5 翻译