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 翻译