atcoder#TOYOTA2023SPRINGFINALC. Count Dividing XOR

Count Dividing XOR

题目描述

整数 L,R L,R が与えられます. 以下の条件を満たす整数の組 (A,B) (A,B) の個数を数えてください.

  • L  A < B  R L\ \leq\ A\ <\ B\ \leq\ R
  • A A A  B A\ \oplus\ B で割り切れる.
  • B B A  B A\ \oplus\ B で割り切れる.

ただしここで \oplus はビット単位 XOR \mathrm{XOR} 演算を表します.

ビット単位 XOR \mathrm{XOR} 演算とは 非負整数 A, B A,\ B のビット単位 XOR \mathrm{XOR} A  B A\ \oplus\ B は、以下のように定義されます。

  • A  B A\ \oplus\ B を二進表記した際の 2k 2^k (k  0 k\ \geq\ 0 ) の位の数は、A, B A,\ B を二進表記した際の 2k 2^k の位の数のうち一方のみが 1 1 であれば 1 1 、そうでなければ 0 0 である。

例えば、3  5 = 6 3\ \oplus\ 5\ =\ 6 となります (二進表記すると: 011  101 = 110 011\ \oplus\ 101\ =\ 110 )。
一般に k k 個の非負整数 p1, p2, p3, , pk p_1,\ p_2,\ p_3,\ \dots,\ p_k のビット単位 XOR \mathrm{XOR} は $ (\dots\ ((p_1\ \oplus\ p_2)\ \oplus\ p_3)\ \oplus\ \dots\ \oplus\ p_k) $ と定義され、これは p1, p2, p3, , pk p_1,\ p_2,\ p_3,\ \dots,\ p_k の順番によらないことが証明できます。

输入格式

入力は以下の形式で標準入力から与えられる.

L L R R

输出格式

答えを出力せよ.

题目大意

求满足以下条件的整数对 (A,B)(A,B) 的个数(这里 \oplus 表示按位异或):

  • LA<BRL\le A<B\le R

  • ABA\oplus B 能整除 AA

  • ABA\oplus B 能整除 BB

数据范围:

  • 1L<R1091\le L<R\le 10^9

  • RL106R-L\le 10^6

3 6
2
1 100
124
999000000 1000000000
1726239

提示

制約

  • 1  L < R  1018 1\ \leq\ L\ <\ R\ \leq\ 10^{18}
  • RL  106 R-L\ \leq\ 10^6
  • 入力される値はすべて整数である

Sample Explanation 1

(A,B)=(4,5) (A,B)=(4,5) (A,B)=(4,6) (A,B)=(4,6) が条件を満たします.