python3
刚看到这道题的时候就觉得很有意思,不知道有没有和我思路一样的:
因为它是求有一个为0的数字个数,那我们就可以先求出这两个数字转成二进制的长度,再来枚举,在这个长度内0在各个位置时的的数是否在范围内,在就加上去
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
python3 代码
def bl(u):#长度为u的二进制
global a,b,ans
l=[1]*u#先让所有为1
for i in range(1,u):#枚举每一位为0
l[i]=0
k=''.join(str(j) for j in l)
k=int(k,2)
if a<=k<=b:#判断是否在范围内
ans+=1
l[i]=1
a,b=map(int,input().strip().split())
w,ww=bin(a),bin(b)#把a,b转成二进制
n,m=len(str(w))-2,len(str(ww))-2#求二进制的长度有两个符号是表示二进制的要减去
ans=0
for i in range(n,m+1):
bl(i)
print(ans)