Giả sử chúng ta có một giá trị không âm n, chúng ta phải tìm độ dài của lần chạy liên tiếp dài nhất là 1s trong biểu diễn nhị phân của nó.
Vì vậy, nếu đầu vào là n =1469, thì đầu ra sẽ là 4, vì biểu diễn nhị phân của 156 là "10110111101", vì vậy có bốn số 1 liên tiếp
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- số lượng:=0
- while n không giống 0, do
- n:=n AND (n sau khi dịch sang trái một bit)
- count:=count + 1
- số lượng trả lại
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(n): count = 0 while n != 0: n = n & (n << 1) count = count + 1 return count n = 1469 print(solve(n))
Đầu vào
1469
Đầu ra
4