Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm khoảng cách xa nhất của 1s ở dạng nhị phân của một số bằng Python

Giả sử chúng ta có một số N, chúng ta phải tìm khoảng cách xa nhất giữa hai số 1 liên tiếp trong biểu diễn nhị phân của nó. Nếu không có 2 số 1 liên tiếp thì trả về 0.

Vì vậy, nếu đầu vào là 71, thì đầu ra sẽ là 4, bởi vì 71 trong hệ nhị phân là 1000111. Bây giờ có bốn cái, và 1 đầu tiên và 1 thứ hai ở khoảng cách 4. Tất cả những cái khác đều cách một khoảng cách. Vì vậy, khoảng cách xa nhất là 4 ở đây.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • K:=tạo danh sách các bit biểu diễn nhị phân của N

  • Tối đa:=0, C:=0, S:=0

  • Cờ:=Sai

  • đối với tôi trong phạm vi từ 0 đến kích thước là K, hãy thực hiện

    • nếu K [i] là '1' và C là 0 và Flag là False, thì

      • C:=i

      • Cờ:=True

    • ngược lại khi K [i] là '1' và Flag thì

      • S:=i

      • nếu Max

        • Tối đa:=| S-C |

      • C:=S

  • trả lại Max

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

def solve(N):
   B = bin(N).replace('0b','')
   K = str(B)
   K = list(K)
   Max = 0
   C = 0
   S = 0
   Flag = False
   for i in range(len(K)):
      if K[i] is '1' and C is 0 and Flag is False:
         C = i
         Flag = True
      elif K[i] is '1' and Flag:
         S = i
         if Max<abs(S-C):
            Max = abs(S-C)
         C = S
   return Max
n = 71
print(solve(n))

Đầu vào

71

Đầu ra

4