十进制至二进制和连续1的计数

时间:2019-09-20 16:31:28

标签: python-3.x

因此,给我一个问题,在哪里必须输入两个数字并找到它们之间所有数字的二进制表示形式,我们必须检查二进制格式中是否存在连续的1,如果存在,则跳过,否则将其打印出来。

我已经做了很多尝试,创建了所需的二进制表示形式列表,但是现在如何遍历每个数字并检查1的可能性?

n = int(input())
m = int(input())
str=[]
for i in range(n+1,m):
    x = bin(i)
    str.append(x)
print(str)

这是输出

3
7
['0b100', '0b101', '0b110']

1 个答案:

答案 0 :(得分:0)

是这样的:

def solve(a, b):
    result = []
    for x in range(a, b):
        binary_str = bin(x)
        if '11' not in binary_str:
            result.append(binary_str)
    return result
a = int(input())
b = int(input())
r = solve(a, b)
print(r) # ['0b100', '0b101']

请注意,bin不会返回二进制,而是返回二进制表示形式(即字符串)。

效率略低(因为bin()被两次调用)但更短的方法:

def solve(a, b):
    return [bin(x) for x in range(a, b) if '11' not in bin(x)]
print(*solve(int(input()), int(input()))) # 0b100 0b101