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

    solution

    Đề bài: [An toàn thông tin] Phát hiện tệp trùng lặp trong tang vật số bằng băm SHA-256

    Khi xử lý một tập hợp lớn tệp thu giữ từ thiết bị (chứng cứ số), điều tra viên thường cần loại bỏ trùng lặp (deduplication) để giảm khối lượng phân tích: hai tệp có cùng nội dung sẽ luôn cho cùng một giá trị băm SHA-256, bất kể tên tệp khác nhau.

    Cho nội dung của nnn tệp (đánh số từ 1 đến nnn theo thứ tự xuất hiện), hãy nhóm các tệp có nội dung giống hệt nhau (dựa trên băm SHA-256 của nội dung, mã hoá UTF-8) và báo cáo: tổng số nhóm nội dung phân biệt, và với mỗi nhóm có từ 2 tệp trở lên, danh sách chỉ số các tệp trong nhóm đó.

    Ví dụ: 4 tệp với nội dung report, log, report, log tạo thành 2 nhóm phân biệt: nhóm report gồm tệp 1 và 3, nhóm log gồm tệp 2 và 4.

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

      Dòng 1: số nguyên nnn (0≤n≤10000 \le n \le 10000≤n≤1000) — số tệp. nnn dòng tiếp theo, mỗi dòng là nội dung của một tệp (một dòng văn bản UTF-8, có thể rỗng, không chứa ký tự xuống dòng).

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

      Dòng đầu tiên: số nguyên là tổng số nhóm nội dung phân biệt. Sau đó, với mỗi nhóm có từ 2 tệp trùng lặp trở lên (bỏ qua nhóm chỉ có đúng 1 tệp), in một dòng liệt kê chỉ số (1-based) các tệp trong nhóm, tăng dần, cách nhau một khoảng trắng. Các dòng nhóm được sắp xếp theo chỉ số nhỏ nhất của từng nhóm, tăng dần. Nếu không có nhóm trùng lặp nào, chỉ in dòng đầu tiên (không có dòng nào tiếp theo).

    Ví dụ:

    Đầu vào:

    4
    file_a
    file_b
    file_c
    file_d

    Đầu ra:

    4
    

    Đầu vào:

    4
    report
    log
    report
    log

    Đầu ra:

    2
    1 3
    2 4
    

    Đang tải editor...