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

    solution

    Đề bài: [C] Đảo dải bit từ vị trí i đến j — mặt nạ XOR

    Cho số nguyên không dấu nnn và hai chỉ số bit i≤ji \le ji≤j (tính từ 000). Hãy đảo trạng thái mọi bit nằm trong dải [i,j][i, j][i,j], các bit ngoài dải giữ nguyên.

    Kỹ thuật: tạo mặt nạ mask có đúng các bit i..ji..ji..j bằng 1 rồi tính n XOR mask. Một công thức gọn cho mặt nạ là ((1u << (j - i + 1)) - 1u) << i (cần xử lý riêng trường hợp j−i+1=32j - i + 1 = 32j−i+1=32 để tránh dịch quá 313131 bit).

    Ví dụ: n=255,i=0,j=3n = 255, i = 0, j = 3n=255,i=0,j=3 → mask = 111121111_211112​, n⊕mask=111100002=240n \oplus mask = 11110000_2 = 240n⊕mask=111100002​=240.

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

      Ba số: nnn (unsigned int), iii, jjj (0≤i≤j≤310 \le i \le j \le 310≤i≤j≤31).

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

      0≤n≤232−10 \le n \le 2^{32} - 10≤n≤232−1, 0≤i≤j≤310 \le i \le j \le 310≤i≤j≤31.

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

      Một số nguyên không dấu — kết quả sau khi đảo dải bit.

    Ví dụ:

    Đầu vào:

    255 0 3
    

    Đầu ra:

    240

    Giải thích:

    255 = 11111111, đảo 4 bit thấp ra 11110000 = 240.

    Đang tải editor...