华为OD机试真题Java_2022-2023-题目0178-不含101的数

这篇具有很好参考价值的文章主要介绍了华为OD机试真题Java_2022-2023-题目0178-不含101的数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

不含101的数

题目描述

小明在学习二进制时,发现了一类不含 101 101 101 的数,
也就是将数字用二进制表示,不能出现 101 101 101
现在给定一个正整数区间 [ l , r ] [l,r] [l,r],请问这个区间内包含了多少个不含 101 101 101 的数?

输入描述

输入一行,包含两个正整数 l , r ( 1 ≤ l < r ≤ 1 0 9 ) l,r (1 \leq l < r \leq 10^9) l,r(1l<r109)

输出描述

输出一行包含一个整数,表示在 [ l , r ] [l,r] [l,r] 区间内一共有多少个不含 101 101 101 的数。

示例一

输入

1 10

输出

8

说明

区间[1,10]内,5的二进制表示为101,10的二进制表达式为1010,因此出了5与10不满足条件外,其他数字都满足条件,因此答案为8。

示例二

输入

10 20

输出

7

说明

区间[10,20]内,满足条件的数字有[12,14,15,16,17,18,19],因此答案为7。

思路

数字n最低三位为101,即n ^ 5(n异或5等于0),
将每个数字逐位右移并异或运算即可检测是否存在二进制101。文章来源地址https://www.toymoban.com/news/detail-448758.html

参考解题 Java

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: Amos
 * @E-mail: amos@amoscloud.com
 * @Date: 2022/12/31
 * @Time: 8:35
 * @Description:
 */
public class Main0178 {
  public static void main(String[] args) {
    try (Scanner scanner = new Scanner(System.in)) {
      int l = scanner.nextInt();
      int r = scanner.nextInt();
      int res = solution(l, r);
      System.out.println(res);
    }
  }

  private static final int x = 0b0111_1111_1111_1111_1111_1111_1111_1000;

  private static int solution(int l, int r) {
    int count = 0;

    for (int i = l; i <= r; i++) {
      int n = i;
      while (n >= 5) {
        if (((x | n) - x ^ 5) == 0) {
          count++;
          break;
        }
        n >>= 1;
      }
    }
    return r - l + 1 - count;
  }
}

到了这里,关于华为OD机试真题Java_2022-2023-题目0178-不含101的数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【2023】华为OD机试真题Java CC++ Python JS Go-题目0252-密钥格式化

    给定一个非空字符串 S S S ,其被 N N N 个 - 分隔成 N

    2024年02月15日
    浏览(43)
  • 华为OD机试真题2022Q4 A + 2023 B卷(Java&JavaScript)

    大家好,我是哪吒。 五月份之前,如果你参加华为OD机试,收到的应该是2022Q4或2023Q1,这两个都是A卷题。 5月10日之后,很多小伙伴收到的是B卷,那么恭喜你看到本文了,抓紧刷题吧。B卷新题库正在更新中 。 华为机试有三道题,第一道和第二道属于简单题,分值为100分,第

    2024年02月09日
    浏览(58)
  • 华为OD机试真题2022Q4 A + 2023 B卷(JAVA&JS)

     CD卷区Java、JS版地址  →→→   华为OD机试真题2023CD卷(JAVAJS) (需要单独订阅)CD卷区Python、C++版地址  →→→   华为OD机试真题2023CD卷(PythonC++) CD卷持续更新中。。。 各位同学如果收到的是A卷则刷下面的题,如果收到的是B卷则去B卷区刷题 B卷区地址 →→→ 华为OD机

    2024年02月06日
    浏览(49)
  • 【2023】华为OD机试真题Java CC++ Python JS Go-题目0246-需要打开多少监控器

    某长方形停车场,每个车位上方都有对应监控器,当且仅当在当前车位或者前后左右四个方向任意一个车位范围停车时,监控器才需要打开,给出某一时刻停车场的停车分布,请统计最少需要打开多少个监控器 第一行输入m,n表示长宽,满足1m,n=20;后面输入m行, 每行有n个0或

    2024年02月09日
    浏览(49)
  • 【2023】华为OD机试真题全语言-题目0232-最大子矩阵

    实现一个程序 search_matrix(matrix) ,参数 matrix 一是个仅包含 0 或 1 两种数字的矩阵, 程序应返回输入矩阵中包含的最大正方形子矩阵(长和宽相等)的区域面积。 例如:如果 matrix 是 [\\\"1010111111\\\",\\\"0000000111\\\",\\\"1010110111\\\",\\\"0000110001\\\"] 那么它看起来像下面的矩阵: 1010111 111 0000000 111 1010110

    2024年02月08日
    浏览(56)
  • 华为OD机试(2022&2023)真题目录 + 考点 + 复盘思路

    大家好,我是哪吒。 本专栏包含了最新最全的华为OD机试真题,有详细的分析和Java代码解答。已帮助1000+同学顺利通过OD机考,发现新题目,随时更新。 以下为华为OD机试真题题库。 1、华为OD机试真题B卷 Java 实现【最少交换次数】 2、华为OD机试真题B卷 Java 实现【内存资源分

    2024年02月01日
    浏览(43)
  • 华为OD机试(2022&2023)真题目录 + 考点 + 通过率

    大家好,我是哪吒。 本专栏包含了最新最全的华为OD机试真题,有详细的分析和Java代码解答。已帮助1000+同学顺利通过OD机考,发现新题目,随时更新。 华为OD机试是指华为公司的在线笔试,是华为公司用于筛选招聘岗位候选人的一种考核方式。 华为OD机试通常由多个题目组

    2024年02月02日
    浏览(121)
  • 华为OD机试真题2022&2023(C++)真题目录 + 考点 + 通过率

    本文是2024华为OD机试真题(C语言)专栏的目录贴(持续更新中…) 专栏介绍: 定期更新华为OD各个时间阶段的机试真题,每日定时更新,本专栏将使用C语言进行更新解答,包含真题,思路分析,代码参考,欢迎大家订阅学习 🔥2024华为OD机试真题(C C++ Java Py JS) B+C+D卷🔥 🔥20

    2024年02月05日
    浏览(196)
  • 【2023】华为OD机试真题全语言-题目0233-单向链表中间节点

    求单向链表中间的节点值,如果奇数个节点取中间,偶数个取偏右边的那个值。 第一行 链表头节点地址 后续输入的节点数 n n n 后续输入每行表示一个节点,格式 节点地址 节点值 下一个节点地址( -1 表示空指针) 输入保证链表不会出现环,并且可能存在一些节点不属于链表

    2024年02月05日
    浏览(38)
  • 华为OD真题2023新题库(机试通知上写着--A卷2022Q4)

    华为od最近又开始招人了,对于目前市场上行情来看,虽然去od加班可能多,但工资还是可以的,大环境不好都开始卷了,od对于目标院校机试成绩比较低150分(2023年好像又涨了),其他非目标院校350,wx外包300。 当你收到邮件,试卷名称: A卷2022Q4时 ,就是2023新的题库,已

    2024年02月06日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包