#P6218. 圆数(Round Numbers)

0
    ID: 8454 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>P6218数位 DP数位DP组合数学动态规划CSP-S

圆数(Round Numbers)

圆数(Round Numbers)

题目描述

如果一个正整数的二进制表示中,00 的数目不小于 11 的数目,那么它就被称为「圆数」。

例如,99 的二进制表示为 10011001,其中有 22 个 00 与 22 个 11。因此,99 是一个「圆数」。

请你计算,区间 [l,r][l,r] 中有多少个「圆数」。

输入格式

一行,两个整数 l,rl,r。

输出格式

一行,一个整数,表示区间 [l,r][l,r] 中「圆数」的个数。

样例输入 #1

2 12

样例输出 #1

6

数据范围

【数据范围】

对于 100%100\% 的数据,1≤l,r≤2×1091\le l,r\le 2\times 10^9。


【样例说明】

区间 [2,12][2,12] 中共有 66 个「圆数」,分别为 2,4,8,9,10,122,4,8,9,10,12。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):1700。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1 样例
1 20 2~8 小规模 l,r≤10^4 / 特殊: l=r单数判定 / 特殊: [2^k,2^(k+1)-1]固定位长区间
2 15 9~11 Hack: l=1,r=1最小边界 / Hack: l=1,r=2×10^9最大跨度 / Hack: 2^30附近最高位进位
3 30 12~20 中规模 r≤10^7 / 大规模 1≤l≤r≤2×10^9 二进制数位DP压力
4 25 21~25 随机 1≤l≤r≤2×10^9 回归

出处:原题链接