AT_pakencamp_2023_day3_j XOR
题目描述
请解答 $T$ 个测试用例的以下问题。
给定非负整数 $L, R\, (L \leq R)$。当从 $\lbrace L, L+1, \ldots, R \rbrace$ 中选取一个子集时,该子集中所有数的总体 XOR 可以取到多少种不同的整数?这里约定,空集(选取 $0$ 个数)的 XOR 为 $0$。
XOR 的定义:对于非负整数 $x, y$,逐位的异或 $x\operatorname{XOR}y$ 定义如下——将 $x$ 和 $y$ 以二进制形式表示时,每一 bit 位上,如果 $x$ 和 $y$ 在这一位上恰好有一个为 $1$,则该位为 $1$,否则为 $0$。
例如,$5\operatorname{XOR}6=3$。(二进制下为 $101\operatorname{XOR}110=011$。)
输入格式
输入按以下格式由标准输入给出。
> $T$
> $\mathrm{test}_1$
> $\mathrm{test}_2$
> $\vdots$
> $\mathrm{test}_T$
其中,$\mathrm{test}_i$ 表示第 $i$ 个测试用例,其格式为
> $L\ R$
输出格式
对每个测试用例,按顺序输出一个答案,每行对应一个测试用例。
对于每个测试用例,输出作为总体 XOR 可以取的不同整数的个数。
说明/提示
### 样例解释 1
对第 $1$ 个测试用例,总体 XOR 可以取得的整数是 $0,1,2,3,8,9,10,11$ 共 $8$ 个。例如,选择集合 $\lbrace 8, 10 \rbrace$ 将得到总体 XOR 为 $2$。
### 约束条件
- $1 \leq T \leq 2\times 10^5$
- $0 \leq L \leq R < 2^{60}$
由 ChatGPT 5 翻译