Giả sử chúng ta có một mảng A gồm 0s và 1s, coi N [i] là mảng con thứ i từ chỉ số A [0] đến A [i] được hiểu là một số nhị phân. Chúng ta phải tìm một danh sách các câu trả lời boolean, trong đó câu trả lời [i] là đúng nếu và chỉ khi N [i] chia hết cho 5.
Vì vậy, nếu đầu vào là [0,1,1,1,1,1], thì đầu ra sẽ là [true, false, false, false, true, false]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- length:=kích thước của A
- ans:=tạo một mảng có độ dài kích thước và điền bằng false
- number:=một giá trị nhị phân bằng cách nối từng phần tử từ A
- đối với tôi trong phạm vi từ 0 đến chiều dài, thực hiện
- nếu số mod 5 giống 0, thì
- ans [length-i-1]:=True
- number:=number / 2
- nếu số mod 5 giống 0, thì
- trả lại ans
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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]))
Đầu vào
[0,1,1,1,1,1]
Đầu ra
[True, False, False, False, True, False]