不含 101 的数 解题思路

'''
小明在学习二进制时,发现了一类不含 101的数,也就是:
将数字用二进制表示,不能出现101。
现在给定一个整数区间[l,r] ,请问这个区间包含了多少个不含101的数?
输入描述
输入的唯——行包含两个正整数l, r(1slsrs10^9) 。
输出描述
输出的唯——行包含一个整数,表示在[l,r]区间内一共有几个不含 101的数。
样例样例一:
输入
1 10
输出
8
样例解释
区间[1,10]内, 5的二进制表示为101, 10的二进制表示为1010,因此区间[1,10]内有10-2-8个不含101的数。
样例二:
输入
10 20
输出
7
样例解释
区间[10,20]内,满足条件的数字有[12,14,15,16,17,18,19]因此答案为7。
'''

l, r = map(int, input().split())

count = 0

for i in range(l, r):
    str_101 = str(bin(i))   # 转化为二进制字符串
    if '101' not in str_101:
        count += 1

print(count)

你可能感兴趣的:(算法题,python)