笔试-二进制

应用题

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

实现

python 复制代码
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}。")
powershell 复制代码
输入下限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。
相关推荐
浩浩测试一下15 天前
汇编 16位32位64位通用寄存器(逆向分析)
汇编·windows·stm32·单片机·嵌入式硬件·逆向·二进制
浩浩测试一下17 天前
汇编 数组与串指令(逆向分析)
汇编·逆向·二进制·免杀·串指令·汇编数组
浩浩测试一下18 天前
汇编中的段与段寄存器(大小)段序 (逆向分析)
汇编·逆向·二进制·字节序·windows编程·内存地址排序
其实防守也摸鱼19 天前
upload-labs靶场的pass-13~21的解题步骤及原理讲解
python·安全·网络安全·靶场·二进制·文件上传漏洞·文件包含漏洞
浩浩测试一下20 天前
汇编 高低八位寄存器数据存储方式(逆向分析)
汇编·网络安全·逆向·二进制·免杀·寄存器·windows编程
BW.SU20 天前
PackagingTool 嵌入式资源打包合并工具
单片机·二进制·嵌入式开发·资源合并软件·图片打包
chaoguo12342 个月前
Plist 二进制格式
二进制·plist
汉克老师2 个月前
GESP2024年12月认证C++三级( 第一部分选择题(1-8))
c++·字符串·二进制·八进制·补码·gesp三级·gesp3级
汉克老师2 个月前
GESP2025年6月认证C++三级( 第一部分选择题(1-8))
c++·二进制·原码·补码·gesp三级·gesp3级·八进制、
The_Uniform_C@t24 个月前
PWN | 对CTF WIKI的复现+再学习 (第八期)
网络·学习·网络安全·二进制