快捷搜索: 王者荣耀 脱发

不含 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)
小明在学习二进制时,发现了一类不含 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)
经验分享 程序员 微信小程序 职场和发展