该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

二进制

题目描述

给定两个正整数 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 22
44 100100 33
55 101101 33
66 110110 33
77 111111 33
88 10001000 44
99 10011001 44
1010 10101010 44

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

所以答案为 55。

数据范围与约定

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

测试点编号 r≤r \le 特殊性质
1∼41 \sim 4 10310^3 无
5∼85 \sim 8 10610^6 特殊性质 A
9∼129 \sim 12 101210^{12} 无
13∼1613 \sim 16 101810^{18} 特殊性质 B
17∼2017 \sim 20 无
  • 特殊性质 A:保证 l=rl=r。
  • 特殊性质 B:保证 ll 和 rr 的二进制位数相同。