【华为机试真题详解】不含 101 的数【2022 Q4 | 100分】

news2024/11/23 18:49:55

文章目录

  • 前言
  • 题目描述
  • 输入描述
  • 输出描述
  • 示例 1
  • 示例2
  • 题目解析
  • 参考代码


前言

《华为机试真题详解 Python实现》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。
如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!
本文解法非最优解(即非性能最优),不能保证通过率。

特别提醒!!!!
注意1:机试为ACM 模式
你的代码需要处理输入输出,input接收输入、print格式化输出

注意2:机试按通过率记分
复杂题目可以考虑暴力破解,再逐步优化,不是运行超时就无法得分,如下,提交结果运行超时,但用例通过率>92.31% , 如果是100分的题目,可以得92.3分。
在这里插入图片描述

题目描述

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

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

现在给定一个整数区间 [l,r] ,请问这个区间包含了多少个不含 101 的数?

输入描述

输入的唯一一行包含两个正整数 l, r( 1 ≤ l ≤ r ≤ 10^9)。

输出描述

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

示例 1

输入
1 10
输出

8

示例说明:
区间 [1,10] 内, 5 的二进制表示为 101 ,10的二进制表示为 1010 ,因此区间 [ 1 , 10 ] 内有 10−2=8 个不含 101的数。

示例2

输入
10 20
输出

7

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

题目解析

有两个思路:
第一种是对区间中的每个数值求二进制然后判断其中是否包含101,如果不包含记数+1;
第二种是求最值的二进制,然后移动101的位置,求可能的组合个数,总数减去包含的个数就是带输出个数;

从输入的数值范围可以看出,如果使用第一种方法肯定是会超时的,感兴趣的同学可以自行实现,在评论区分享。

示例2的分析:
10对应的二进制 01010
20对应的二进制 10100

一共5位数,
从最右侧开始找可能的组合 第一种00101小于01010跳过;
左移一位第二种01010等于01010,替换第一位数和第五位数找可能,11010、11011、01011,前两个超出范围也不计算个数;(这里我们可以只考虑对101右则的位置求组合数)
再左移一位第二种10100等于10100,替换第四位数和第五位数找可能,10101,10110,10111,都超出范围也不计算个数;

区间内满足条件的二进制有 01010、01011、10100,一共三个,10-3=7,输出7;

参考代码

def get_permutations(data=None):
    if not data:
        return ["0", "1"]

    tmp = []
    for c in data:
        tmp.append(c+"0")
        tmp.append(c+"1")
    return tmp


while 1:
    try:
        _mini, _maxi = map(int, input().split())
        _minb = bin(_mini)[2:]
        _maxb = bin(_maxi)[2:]
        lens = max(len(_minb), len(_maxb))

        sign = "101"
        # 最大值小于5的情况
        if lens < len(sign):
            print(_maxi-_mini)
            break

        set101 = set()
        permutations = None
        # 101可移动的次数
        for i in range(lens-len(sign)):
            permutations = get_permutations(permutations)
            for c in permutations:
                if int(sign+c, 2) > _maxi:
                    break
                set101.add(sign+c)

        print(_maxi-_mini-len(set101))
    except Exception as e:
        break

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142200.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

逻辑漏洞渗透与攻防(五)之权限类逻辑漏洞

目录 权限类逻辑漏洞 平行权限跨越 基于用户身份ID 基于对象ID 基于文件名 垂直权限跨越 未经授权访问 权限类逻辑漏洞 越权漏洞又分为平行越权&#xff0c;垂直越权和交叉越权。 平行越权&#xff1a;权限类型不变&#xff0c;权限ID改变&#xff0c;垂直越权&#xff1…

SQL ORDER BY 关键字

ORDER BY 关键字用于对结果集进行排序。 SQL ORDER BY 关键字 ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序&#xff0c;您可以使用 DESC 关键字。 SQL ORDER BY 语法 SELECT c…

太适合小白了!11招,高手都在用的数据分析招式!

阅读本文大概需要3分钟菜鸟独白用Python来玩转数据分析实在是太爽了&#xff0c;因为有强大的Pandas来处理数据非常方便&#xff0c;我个人对数据分析情有独钟&#xff0c;探索数据的秘密非常好玩&#xff01;前段时间写过一篇小白学数据分析入门招式&#xff0c;但是进阶的部分…

蓝桥杯基础练习合集九 1.回文词2.猜数字游戏的提示3.生成元4.环状序列5.刽子手游戏

目录 1.回文词 2.猜数字游戏的提示 3.生成元 4.环状序列 5.刽子手游戏 1.回文词 问题描述 输入一个字符串&#xff0c;判断它是否为回文串以及镜像串。输入字符串保证不含数字0。所谓回文串&#xff0c;就是反转以后和原串相同&#xff0c;如abba和madam。所有镜像串&…

docker 安装mysql5.7

拉取镜像 非常快 因为上一篇安装的是阿里云的centos7并且配置了阿里云的镜像加速 docker pull mysql:5.7 拉取成功检验 启动镜像 docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASS…

软件测试行业未来职业规划是什么

随着软件工程活动的不断演化&#xff0c;软件测试岗位已经成为了软件开发中极其重要的一个环节&#xff0c;因而市场对于软件测试人才的需求也在日益扩大。相信不少想入行软件测试的小伙伴都难免会有这样的疑问&#xff0c;软件测试行业究竟怎么样&#xff1f;职业发展应该如何…

代码层面解决 The channelMax limit is reached. Try later.

该问题也是非常的严重&#xff0c;没有合适处理即导致消息丢失&#xff1b; 解决方案 设置连接工厂配置 CachingConnectionFactory connectionFactory new CachingConnectionFactory();connectionFactory.setChannelCheckoutTimeout(30000);解析 该报错根本原因是**”连接池…

2023年1月伊凡梳理如何快速安装git并且配置本地gitee账号权限方便拉代码

本文优雅草伊凡投稿一颗优雅草科技&#xff0c;欢迎其他朋友们来投稿&#xff08;一定会详细署名&#xff09;还是那个原因因为重装了因此git信息已经没有了&#xff0c;还是那个原因因为网上各类文章鱼龙混杂有好的有坏的&#xff0c;真正可用的其实还是不好找的&#xff0c;自…

延迟低于1.55毫秒,韩国ETRI研发远程实时触觉渲染系统

相比于AR/VR这种视觉模拟技术&#xff0c;体感、触觉模拟技术远不够成熟&#xff0c;依然受到体积、延迟、人体工学等方面限制。尽管如此&#xff0c;科研界不断探索多种体感模拟方案&#xff0c;以实现轻薄、灵活的穿戴式设计&#xff08;比如体感手套&#xff09;。近期&…

imutils简介

imutils对一系列OpenCV函数进行二次封装&#xff0c;执行基本任务&#xff0c;如平移、旋转、调整大小和骨架提取。 1.安装 这个包假设您已经安装了NumPy和OpenCV(如果您打算使用opencv2matplotlib函数&#xff0c;还安装了matplotlib)。 要安装库&#xff0c;只需使用以下命…

【OpenDDS开发指南V3.20】第九章:DCPS信息库

DCPS信息存储库选项 下表显示了DCPInfoRepo服务器的命令行选项: 表9-1 DCPS信息存储库选项 选项描述默认值-o file将DCPInfo对象的IOR写入指定文件repo.ior-NOBITS禁用发布内置主题发布内置主题-a address内置主题的侦听地址(发布内置主题时)随机端口-z启用详细传输日志记…

关系数据库概述

一、数据模型 一般地讲&#xff0c;数据模型是严格定义的一组概念的集合&#xff0c;通常由数据结构、数据操作和完整性约束三部分组成。 1.1 数据结构 数据结构描述数据库的组成对象以及对象之间的联系。数据结构是刻画一个数据模型性质最重要的方面。因此在数据库系统中&…

数据的存储【详解】【强烈推荐!!!】

数据的存储1. 数据类型介绍1.1 类型的基本归类2. 整型在内存中的存储2.1 原码、反码、补码2.2 大小端介绍2.3 练习3. 浮点型在内存中的存储3.1 一个例子3.2 浮点数存储规则1. 数据类型介绍 基本的内置类型、大小&#xff08;字节&#xff09;&#xff08;VS编译器&#xff09;…

bootstrap校验laydate起止日期联动失效

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 项目中用到bootstrapValidator&#xff0c;以及laydate&#xff08;by:贤心&#xff0c;插件效果美观&#xff09;。 项目表单中&#xff0c;有两处需要联动校验&#xff1a;开始日期&#xff0c;结束…

第04讲:HTTP操作之ElasticSearch高级查询

3.1.4、高级查询 Elasticsearch 提供了基于 JSON 提供完整的查询 DSL 来定义查询 定义数据 : # POST /student/_doc/1001 {"name":"zhangsan", "nickname":"zhangsan", "sex":"男","age":30 } # POST…

MySQL innodb引擎架构分析-Change Buffer

系列文章目录 1. MySQL innodb引擎架构分析-Buffer Pool 2. MySQL innodb引擎架构分析-Redo log 3. MySQL innodb引擎架构分析- Double Write Buffer 4.MySQL innodb引擎架构分析-Change Buffer 文章目录系列文章目录前言一、Change Buffer是什么&#xff1f;二、Change Buffe…

日本市场的Starday开始对智能家居下重手

自从21世纪以来&#xff0c;物联网就开始进入大众视野&#xff0c;因此作为物联网基础应用的智能家居已经成为人们对生活场景的一种涉嫌。因此在国外市场当中&#xff0c;跨境电商卖家们通过物联网的智慧家居的售卖&#xff0c;获得了大量的资金&#xff0c;可知“跨境沃土”大…

LeetCode54.螺旋矩阵 LeetCode59.螺旋矩阵Ⅱ | 螺旋矩阵问题

LeetCode刷题记录 文章目录LeetCode54.螺旋矩阵思路代码LeetCode59 螺旋矩阵Ⅱ思路代码LeetCode54.螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例一 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9…

Ubuntu-22 live-server版本安装完成后的配置

软件包管理工具 aptapt 用于取代 apt-get 、apt-cache &#xff0c;apt 将分散在 apt-get 、 apt-cache 的基础操作统一包含在一起apt 与 apt-get 、apt-cache 的对应关系操作aptapt-安装软件包sudo apt install <package>sudo apt-get install <package>卸载软件包…

AcWing 1015. 摘花生(DP)

一、问题描述 二、思路分析 这道题非常类似我们数字三角形那道题&#xff0c;大家如果这道题不会的话&#xff0c;可以先去看作者之前写的数字三角形问题的解法&#xff0c;然后再回来看这道题&#xff0c;或许就能有思路了。 传送门&#xff1a; DP母题——数字三角形 1、状…