当前位置: 首页 > article >正文

笔试-二进制

应用题

将符合区间[l,r]内的十进制整数转换为二进制表示,请问不包含“101”的整数个数是多少?

实现

l = int(input("请输入下限l,其值大于等于1:"))
r = int(input("请输入上限r,其值大于等于l:"))

binary_list = []
# 默认值为0,对应数值为1,未反转
def decimal_to_binary(number):

    if number == 0:
        # 第一次要对空列表配置,否则后面的替换会报错
        if len(binary_list) == 0:
            binary_list.append(0)
        else:
            binary_list[0] = 0  
    else:  
        
        N = 0
        # 当次二进制临界值
        while 2**N <= number:
            N = N + 1
        
        # 第一次要对空列表配置,否则后面的替换会报错
        if len(binary_list) == 0:
            # 设置列表长度为N,全元素置0
            for i in range(0, N):
                binary_list.append(0)
        
        # 临界值位置元素置1
        binary_list[N-1] = 1
        
        left_number = number - 2**(N-1)
        if left_number > 0:
            decimal_to_binary(left_number)
      
# 27 = 16 + 8 + 2 + 1
# 10 = 8 + 2
# decimal_to_binary(32)
# decimal_to_binary(0)
# decimal_to_binary(27)
# decimal_to_binary(10)

# binary_list.reverse()
# print(binary_list)

# string = ""
# for i in binary_list:
#     string = string + str(i)
# print(f"二进制为:{string}")


collections = []
# 范围内的二进制数,构建二维新列表
for i in range(l, r+1):

    decimal_to_binary(i)
    binary_list.reverse()
    # 长度小于3的列表一定没有“101”
    if len(binary_list) >= 3:
        collections.append(binary_list)
    # 再清空
    binary_list = []

print(collections)

sum = 0
for i in range(0, len(collections)):
    for j in range(0, len(collections[i])-2):
        if collections[i][j] == 1 and collections[i][j+1] == 0 and collections[i][j+2] == 1:
            sum = sum + 1

print(f"不包含“101”的整数个数为{len(collections)-sum}。")
输入下限l,其值大于等于1:2
请输入上限r,其值大于等于l:10
[[1, 0, 1], [1, 1, 0], [1, 1, 1], [1, 0, 0, 0], [1, 0, 0, 1], [1, 0, 1, 0]]
不包含“101”的整数个数为4。

http://www.kler.cn/a/527718.html

相关文章:

  • 【leetcode详解】T3175(一点反思)
  • C#面试常考随笔7:什么是匿名⽅法?还有Lambda表达式?
  • Rust语言进阶之文件处理:std::fs用法实例(九十九)
  • 搜索引擎快速收录:关键词布局的艺术
  • Axure PR 9 旋转效果 设计交互
  • java.math 包 中的 BigDecimal 类(详细案例拆解)
  • 实验四 简单查询
  • 【2024年华为OD机试】(C卷,100分)- 检查是否存在满足条件的数字组合 (Java JS PythonC/C++)
  • Redis_Redission的入门案例、多主案例搭建、分布式锁进行加锁、解锁底层源码解析
  • Ruby 类和对象
  • 专业绘图软件draw.io安装使用
  • 2021 年 12 月大学英语四级考试真题(第 3 套)——纯享题目版
  • Jason配置环境变量
  • Docker小游戏 | 使用Docker部署2048网页小游戏
  • 自制虚拟机(C/C++)(一、分析语法和easyx运用,完整虚拟机实现)
  • 常见“栈“相关题目
  • 392.判断子序列
  • React 19 新特性探索:提升性能与开发者体验
  • 数学平均数应用
  • 如何自己设计一个类似 Dubbo 的 RPC 框架?
  • windows系统本地部署deepseek及webui界面
  • doris:数据更新概述
  • Spring Data JPA排序实战:从基础到应用
  • 智联出行公司 ZSTL:创新驱动,引领绿色出行未来
  • Many Whelps! Handle It! (10 player) Many Whelps! Handle It! (25 player)
  • 【回溯+剪枝】组合问题!