CF611B New Year and Old Property

题目描述

2015 年即将结束。 Limak 是一只小北极熊。他最近学会了二进制系统。他注意到,当前年份在二进制表示中恰好有一个零,即 $2015_{10} = 11111011111_{2}$。注意,他并不关心十进制表示中零的数量。 Limak 选择了一个年份区间,他准备统计该区间中所有二进制表示中恰好有一个零的年份。你能帮他更快地完成统计吗? 假设所有正整数的二进制表示均不包含前导零。

输入格式

输入仅一行,包含两个整数 $a$ 和 $b$($1 \leq a \leq b \leq 10^{18}$),分别表示 Limak 选择的年份区间的起始年份和结束年份。

输出格式

输出一个整数,表示在所选区间内,二进制表示中恰好有一个零的年份数量。

说明/提示

在第一个样例中,Limak 选定的区间为 $5_{10}=101_{2}$、$6_{10}=110_{2}$、$7_{10}=111_{2}$、$8_{10}=1000_{2}$、$9_{10}=1001_{2}$ 和 $10_{10}=1010_{2}$。其中有 $101_{2}$ 和 $110_{2}$ 两个数符合题意。 由 ChatGPT 5 翻译