华为OD机试 - 不含101的数(Java 2024 E卷 100分)

博客介绍了如何解决华为OD机试中的一道算法题,即求解给定正整数区间内不含二进制表示中101的数的数量。解题思路包括读取区间、遍历数字、转换为二进制并检查是否包含子串101,最终通过Java算法源码展示了解决方案,并给出了输入输出示例及解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、题目描述

小明在学习二进制时,发现了一类不含101的数,也就是:

  • 将数字用二进制表示,不能出现101。

现在给定一个正整数区间,请问这个区间内包含了多少个不含101的数?

二、输入描述

输入的唯一一行包含两个正整数。

三、输出描述

输出的唯一一行包含一个整数,表示在区间内一共有几个不含101的数。

四、测试用例

测试用例1

1、输入

8 16

2、输出

6

3、说明

8 → “1000” 不含
9 → “1001” 不含
10 → “1010” 含
11 → “1011” 含
12 → “1100” 不含
13 → “1101” 含(子串为 “101” 从下标1开始出现)
14 → “1110” 不含
15 → “1111” 不含
16 → “10000” 不含
共符合要求数字有 8, 9, 12, 14, 15, 16,共 6 个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值