该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
二进制
题目描述
给定两个正整数 l,r,请你求出区间 [l,r] 中,有多少个整数的二进制表示长度为偶数。
一个正整数的二进制表示长度,指的是不含前导零时的二进制位数。
例如:
-
1 的二进制是 1,长度为 1,不是偶数位;
-
2 的二进制是 10,长度为 2,是偶数位;
-
7 的二进制是 111,长度为 3,不是偶数位;
-
8 的二进制是 1000,长度为 4,是偶数位。
现在请你统计区间 [l,r] 中满足条件的整数个数。
输入格式
一行两个整数 l,r。
输出格式
输出一个整数,表示答案。
样例输入
1 10
样例输出
5
样例解释
区间 [1,10] 中:
| 数字 |
二进制 |
位数 |
| 1 |
1 |
1 |
| 2 |
10 |
2 |
| 3 |
11 |
| 4 |
100 |
3 |
| 5 |
101 |
| 6 |
110 |
| 7 |
111 |
| 8 |
1000 |
4 |
| 9 |
1001 |
| 10 |
1010 |
满足条件的是:2,3,8,9,10
所以答案为 5。
数据范围与约定
对于 100% 的数据,保证 1≤l≤r≤1018。
| 测试点编号 |
r≤ |
特殊性质 |
| 1∼4 |
103 |
无 |
| 5∼8 |
106 |
特殊性质 A |
| 9∼12 |
1012 |
无 |
| 13∼16 |
1018 |
特殊性质 B |
| 17∼20 |
无 |
- 特殊性质 A:保证 l=r。
- 特殊性质 B:保证 l 和 r 的二进制位数相同。