二进制

题目描述

给定两个正整数 l,rl,r,请你求出区间 [l,r][l,r] 中,有多少个整数的二进制表示长度为偶数。

一个正整数的二进制表示长度,指的是不含前导零时的二进制位数。

例如:

  • 11 的二进制是 11,长度为 11,不是偶数位;

  • 22 的二进制是 1010,长度为 22,是偶数位;

  • 77 的二进制是 111111,长度为 33,不是偶数位;

  • 88 的二进制是 10001000,长度为 44,是偶数位。

现在请你统计区间 [l,r][l,r] 中满足条件的整数个数。

输入格式

一行两个整数 l,rl,r

输出格式

输出一个整数,表示答案。

样例输入

1 10

样例输出

5

样例解释

区间 [1,10][1,10] 中:

数字 二进制 位数
1\text{}1 11\text{} 11
22 1010 22
33 1111
44 100100 33
55 101101
66 110110
77 111111
88 10001000 44
99 10011001
1010 10101010

满足条件的是:2,3,8,9,102,3,8,9,10

所以答案为 55

数据范围与约定

对于 100%100\% 的数据,保证 1lr10181 \le l \le r \le 10^{18}

测试点编号 rr \le 特殊性质
141 \sim 4 10310^3
585 \sim 8 10610^6 特殊性质 A
9129 \sim 12 101210^{12}
131613 \sim 16 101810^{18} 特殊性质 B
172017 \sim 20
  • 特殊性质 A:保证 l=rl=r
  • 特殊性质 B:保证 llrr 的二进制位数相同。