python-3.x - 十进制到二进制和连续 1 的计数
问题描述
所以,我得到了这个问题,必须输入两个数字并找到它们之间所有数字的二进制表示,我们必须检查二进制形式中是否有连续的 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']
解决方案
所以是这样的:
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
推荐阅读
- reactjs - 带有表情符号的 ReactJS 文本输入
- batch-file - 批处理 - 删除范围/特定单词
- azure - 多个用户如何认证 R/RW/ADM?在 azure 容器注册表中
- flutter - Flutter setState() 并不总是调用我的构建方法
- html - 本地网站与在线网站不同
- http - 是否可以向任何网站发送获取请求?
- python - 基于轴字符串值的彩色matplotlib条形图
- c++ - 使用模板基类消除工厂类派生类冗余的简洁方法
- scala - 如何在 GraphQL Sangria 中将 Scala Map[String, Seq[String]] 转换为 MapType
- r - 使用 R 在数据集中按月计算的条件一致