atcoder#ABC138F. [ABC138F] Coincidence

[ABC138F] Coincidence

配点 : 600600

問題文

整数 L,RL, R が与えられます。整数の組 (x,y)(x, y) (LxyR)(L \leq x \leq y \leq R) であって、yyxx で割った余りが y XOR xy \text{ XOR } x に等しいものの個数を 109+710^9 + 7 で割ったあまりを求めてください。

$\text{ XOR }$ とは

整数 A,BA, B のビットごとの排他的論理和 a XOR ba \text{ XOR } b は、以下のように定義されます。

  • a XOR ba \text{ XOR } b を二進数表記した際の 2k2^k (k0k \geq 0) の位の数は、A,BA, B を二進数表記した際の 2k2^k の位の数のうち一方のみが 11 であれば 11、そうでなければ 00 である。

例えば、3 XOR 5=63 \text{ XOR } 5 = 6 となります (二進数表記すると: 011 XOR 101=110011 \text{ XOR } 101 = 110)。

制約

  • 1LR10181 \leq L \leq R \leq 10^{18}

入力

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

LL RR

出力

条件を満たす整数の組 (x,y)(x, y) (LxyR)(L \leq x \leq y \leq R) の個数を 109+710^9 + 7 で割ったあまりを出力せよ。

2 3
3

条件を満たす組は (2,2),(2,3),(3,3)(2, 2), (2, 3), (3, 3)33 通りです。

10 100
604
1 1000000000000000000
68038601

個数を 109+710^9 + 7 で割ったあまりを計算することを忘れないでください。