代码之家  ›  专栏  ›  技术社区  ›  nav112

python查找数字的酷性时出错

  •  0
  • nav112  · 技术社区  · 3 年前

    数字的冷度定义为二进制表示中出现的“101”的数字。如果数字二进制表示为“101”,那么它的凉爽度为1 如果一个数字的凉爽度大于或等于k,则该数字被定义为非常凉爽

    输入:21 2输出:1

    但我越来越

    输出:2而不是1

     def v(j):
           res=''
            c=0
          while j>0:
            res=res+str(j%2)
            j=j//2
            for i in range(2,len(res)):
                if res[i]+res[i-1]+res[i-2]=="101":
                    c+=1
        return c>=k
    n,k=map(int,input().split())
    r=0
    for i in range(2,n+1):
        if v(i):
            r=r+1
    print(r)
    
    2 回复  |  直到 3 年前
        1
  •  2
  •   DYZ    3 年前

    计算“酷度”的最简单方法是使用内置函数,而不是发明自己的函数。作用 bin(x) 将整数转换为二进制表示的字符串。方法 str.count() 计算子字符串。

    bin(21).count('101')
    # 1
    
        2
  •  -3
  •   DYZ    3 年前
    while j>0:
        res=res+str(j%2)
        j=j//2
    for i in range(2,len(res)):
        if res[i]+res[i-1]+res[i-2]=="101":
            c+=1
    return c>=k