AT_tupc2024_f Another Long Sequence Inversion

Description

非負整数 $ L,R,X $ が二進法で与えられます。長さ $ R-L+1 $ の整数列 $ (L \oplus X,(L+1)\oplus X, \dots, R\oplus X) $ の転倒数を二進法で求めてください。 ただし、 $ \oplus $ はビットごとの排他的論理和を表します。 $ T $ 個のテストケースが与えられるので、それぞれについて答えを求めてください。 転倒数とは 数列 $ B=(B_1,B_2,\dots, B_M) $ の転倒数とは、整数の組 $ 1 \leq i \lt j \leq M $ であって $ B_i \gt B_j $ を満たすものの個数です。 ビットごとの排他的論理和とは 非負整数 $ A,B $ のビットごとの排他的論理和 (XOR) $ A \oplus B $ は、以下のように定義されます。 - $ A \oplus B $ を二進表記した際の $ 2^k \, (k \geq 0) $ の位の数は、 $ A,B $ を二進表記した際の $ 2^k $ の位の数のうち一方のみが $ 1 $ であれば $ 1 $ 、そうでなければ $ 0 $ である。 例えば、 $ 3 \oplus 5 = 6 $ となります (二進表記すると: $ 011 \oplus 101=110 $ )。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ T $ $ \text{case}_1 $ $ \text{case}_2 $ $ \vdots $ $ \text{case}_T $ 各テストケースは以下の形式で与えられる。 > $ L $ $ R $ $ X $

Output Format

$ T $ 行出力せよ。 $ i $ 行目には $ i $ 個目のテストケースに対する答えを出力せよ。

Explanation/Hint

### 部分点 追加の制約 $ T \leq 3000, R \lt 2^{30}, X \lt 2^{30} $ を満たすデータセットに正解した場合は $ 10 $ 点が与えられる。 ### Sample Explanation 1 $ 1 $ つ目のテストケースについて、 $ L,R,X $ をそれぞれ十進法で表記すると $ L=5,R=8,X=2 $ です。 $ (5\oplus 2, 6\oplus 2, 7\oplus 2, 8\oplus 2)=(7,4,5,10) $ なので求めるべき転倒数は $ 2 $ です。 ### Constraints - $ 1 \leq T \leq 2 \times 10^5 $ - $ 0 \leq L \leq R \lt 2^{2 \times 10^5} $ - $ 0 \leq X \lt 2^{2 \times 10^5} $ - 入力は全て整数 - $ T $ は 十進法で与えられる - $ L,R,X $ は二進法で与えられ、先頭に余分な `0` を含まない(ただし $ 0 $ は $ 1 $ 桁の整数とみなす) - $ 1 $ つの入力ファイルに含まれる $ R $ の二進法での桁数の総和は $ 2 \times 10^5 $ 以下 - $ 1 $ つの入力ファイルに含まれる $ X $ の二進法での桁数の総和は $ 2 \times 10^5 $ 以下