一、题目描述
小明在学习二进制时,发现了一类不含101的数,也就是:
- 将数字用二进制表示,不能出现101。
现在给定一个正整数区间,请问这个区间内包含了多少个不含101的数?
二、输入描述
输入的唯一一行包含两个正整数。
三、输出描述
输出的唯一一行包含一个整数,表示在区间内一共有几个不含101的数。
四、解题思路
- 读取输入的左边界
left
和右边界right
。 - 初始化结果变量
result
为right - left + 1
,表示初始区间内的所有数都满足条件。 - 使用循环遍历区间内的每个数,从
left
到right
。 - 将当前数转换为二进制字符串
number_str
,使用Integer.toBinaryString()
方法进行转换。 - 检查二进制字符串中是否包含子字符串
"101"
,使用contains()
方法进行检查。 - 如果包含
"101"
,则说明该数不满足条件,将result
减 1。 - 继续遍历下一个数,直到遍历完区间内的所有数。
- 循环结束后,输出结果
result
。