Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [C] Xoá bit 1 thấp nhất của mã quyền truy cập

    Hệ thống lưu quyền truy cập của tài khoản dưới dạng số nguyên không dấu, mỗi bit ứng với một quyền (đọc, ghi, xoá, ...). Khi quản trị viên thu hồi quyền thấp nhất hiện đang bật, hãy in ra mặt nạ quyền mới.

    Bạn chỉ cần dùng đúng một biểu thức n & (n - 1) — đây là kỹ thuật bit-twiddling kinh điển để xoá bit 1 thấp nhất của nnn.

    Ví dụ: n=12=11002n = 12 = 1100_2n=12=11002​ → xoá bit 1 thấp nhất (ở vị trí 2) ra 10002=81000_2 = 810002​=8.

    • Định dạng đầu vào:

      Một số nguyên không dấu nnn (0≤n≤4,294,967,2950 \le n \le 4{,}294{,}967{,}2950≤n≤4,294,967,295).

    • Ràng buộc đầu vào:

      0≤n≤232−10 \le n \le 2^{32} - 10≤n≤232−1. Dùng kiểu unsigned int.

    • Định dạng đầu ra:

      Một số nguyên — giá trị của n & (n - 1).

    Ví dụ:

    Đầu vào:

    12
    

    Đầu ra:

    8

    Giải thích:

    12 = 1100, sau khi xoá bit 1 thấp nhất ra 1000 = 8.

    Đang tải editor...