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

    solution

    Đề bài: [Hệ điều hành Unix] Checksum từ chuỗi byte hex

    Internet checksum trên byte hex

    Tính internet checksum (RFC 1071) trên một dãy byte cho dưới dạng hex 2 chữ số. Quy tắc:

    1. Ghép từng cặp byte thành word 16-bit big-endian: word = (byte_chẵn << 8) | byte_lẻ.
    2. Nếu số byte lẻ, byte cuối được pad thêm 0x00 ở phía sau (tức word = byte_cuối << 8).
    3. Cộng dồn các word, fold carry, lấy bù 1 trong 16 bit.

    In checksum dưới dạng 4 chữ số hex chữ thường.

    Ví dụ I/O

    Vào:

    4
    00 01 f2 03
    

    Word: 0x0001, 0xf203. Tổng = 0xf204. Bù 1 = 0x0dfb → 0dfb.

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

      Dòng 1: số byte n. Dòng 2: n byte hex 2 chữ số, cách nhau bởi khoảng trắng.

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

      1 ≤ n ≤ 20000. Mỗi byte trong [00, ff].

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

      Một dòng: checksum 4 chữ số hex chữ thường.

    Ví dụ:

    Đầu vào:

    4
    00 01 f2 03
    

    Đầu ra:

    0dfb

    Giải thích:

    Word 0x0001+0xf203=0xf204, bù 1 = 0x0dfb.

    Đang tải editor...