二进制前缀在Python中可被5整除

假设我们有一个0和1的数组A,考虑N [i]是从索引A [0]到A [i]的第i个子数组,被解释为二进制数。我们必须找到一个布尔答案列表,其中且仅当N [i]被5整除时,答案[i]为真。

因此,如果输入类似于[0,1,1,1,1,1,1],则输出将为[true,false,false,false,true,false]

为了解决这个问题,我们将遵循以下步骤-

  • 长度:= A的大小

  • ans:=制作一个大小为长度的数组,并用false填充

  • 数字:=通过将A中的每个元素串联而得到的二进制值

  • 对于长度范围为0的i,执行

    • ans [length-i-1]:=真

    • 如果数字mod 5与0相同,则

    • 数字:=数字/ 2

    • 返回ans

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def prefixesDivBy5(self, A):
          length=len(A)
          ans=[False]*length
          number=int("".join(map(str,A)),2)
          for i in range(length):
             if number%5==0:
                ans[length-i-1]=True
                number=number>>1
          return ans
    ob = Solution()print(ob.prefixesDivBy5([0,1,1,1,1,1]))

    输入值

    [0,1,1,1,1,1]

    输出结果

    [True, False, False, False, True, False]