atcoder#ARC129A. [ARC129A] Smaller XOR

[ARC129A] Smaller XOR

题目描述

整数 N,L,R N,L,R が与えられます. 以下の条件を両方満たす整数 x x の個数を数えてください.

  • L  x  R L\ \leq\ x\ \leq\ R
  • (x  N) < N (x\ \oplus\ N)\ <\ N (ここで \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 )。

输入格式

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

N N L L R R

输出格式

答えを出力せよ.

题目大意

给定三个正整数 N,L,RN,L,R,询问满足如下条件的整数 xx 的个数:

  • LxRL\leq x\leq R

  • (xN)<N(x \oplus N) < N

其中 \oplus 是按位异或运算。

2 1 2
1
10 2 19
10
1000000000000000000 1 1000000000000000000
847078495393153025

提示

制約

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

Sample Explanation 1

x=1 x=1 の場合,L  x  R L\ \leq\ x\ \leq\ R は満たしますが,(x  N) < N (x\ \oplus\ N)\ <\ N は満たしません. x=2 x=2 の場合,両方の条件を満たします. 他に条件を満たす x x は存在しません.