CF2225D Exceptional Segments

题目描述

给你两个整数 $n$ 和 $x$。 考虑序列 $[1,2,3,\dots,n]$。你需要找出其中包含 $x$ 且异或结果为 $0$ 的子区间的数量。换句话说,你需要计算满足 $1\le l\le x\le r\le n$ 且 $l\oplus (l+1)\oplus\dots\oplus r=0$ 的 $(l,r)$ 对的数目,其中 $\oplus$ 表示按位异或。 例如,如果 $n=7$ 且 $x=6$,那么以下区间是符合条件的: - $(4,7)$,因为 $x$ 在该区间中且 $4\oplus 5\oplus 6\oplus 7=0$; - $(1,7)$,因为 $x$ 在该区间中且 $1\oplus2\oplus3\oplus4\oplus5\oplus6\oplus7=0$。 由于答案可能非常大,请输出对 $998244353$ 取模后的结果。

输入格式

每个测试包含多个测试用例。第一行包含测试用例数量 $ t (1 \le t \le 2 \times 10^5 )$。以下是测试用例的描述。 每个测试用例中唯一的行包含两个整数 $n$ 和 $x(1 \le x \le n \le 10^{18})$。

输出格式

对于每个测试用例,输出一个整数(对 $998244353$ 取模)。