Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra bit số có số lượng bit 1 liên tiếp tăng dần trong Python

Cho số dương n. Kiểm tra xem trong biểu diễn nhị phân của n, số lượng bit 1 liên tiếp (từ trái sang phải) có tăng dần hay không.

Ví dụ: 1775 → nhị phân 11011101111 → các khối 1: 2, 3, 4 → tăng dần → True.

Giải thuật

  • Chuyển số thành danh sách bit (chuỗi nhị phân).
  • Duyệt đếm độ dài các khối 1 liên tiếp.
  • Kiểm tra xem các độ dài khối có tăng dần không.

Mã ví dụ

def solve(n):
    bits_pattern = list(bin(n))
    bit_count = len(bits_pattern)
    p_cnt = 0
    c_cnt = 0
    i = 0
    while i < bit_count:
        if bits_pattern[i] == '1':
            c_cnt += 1
            i += 1
        elif bits_pattern[i - 1] == '0':
            i += 1
            c_cnt = 0
            continue
        else:
            if c_cnt < p_cnt:
                return 0
            i += 1
            p_cnt = c_cnt
            c_cnt = 0
    if p_cnt > c_cnt and c_cnt != 0:
        return False
    return True

n = 1775
print(solve(n))

Đầu vào

1775

Đầu ra

True