配点 : 600 点
問題文
整数 L,R が与えられます。整数の組 (x,y) (L≤x≤y≤R) であって、y を x で割った余りが y XOR x に等しいものの個数を 109+7 で割ったあまりを求めてください。
$\text{ XOR }$ とは
整数 A,B のビットごとの排他的論理和 a XOR b は、以下のように定義されます。
- a XOR b を二進数表記した際の 2k (k≥0) の位の数は、A,B を二進数表記した際の 2k の位の数のうち一方のみが 1 であれば 1、そうでなければ 0 である。
例えば、3 XOR 5=6 となります (二進数表記すると: 011 XOR 101=110)。
制約
- 1≤L≤R≤1018
入力
入力は以下の形式で標準入力から与えられる。
L R
出力
条件を満たす整数の組 (x,y) (L≤x≤y≤R) の個数を 109+7 で割ったあまりを出力せよ。
2 3
3
条件を満たす組は (2,2),(2,3),(3,3) の 3 通りです。
10 100
604
1 1000000000000000000
68038601
個数を 109+7 で割ったあまりを計算することを忘れないでください。