Khi truyền một tệp lớn qua mạng (kiểu giao thức rsync), tệp thường được chia thành n khối theo thứ tự. Bên gửi tính trước checksum SHA-256 cho từng khối gốc: R1,R2,…,Rn. Sau khi nhận, bên nhận cần xác định những khối nào đã bị hỏng (do lỗi đường truyền) bằng cách so sánh lại checksum.
Cho danh sách checksum tham chiếu R1,…,Rn (SHA-256, dạng hex) và nội dung n khối thực nhận được B1,…,Bn (đúng thứ tự tương ứng, mỗi khối là một dòng, có thể là chuỗi rỗng). Với mỗi i, tính SHA256(Bi) và so sánh với Ri:
Hãy xác định số lượng khối bị hỏng và chỉ số (1-indexed) của chúng theo thứ tự tăng dần.
Ví dụ: n=3, các khối 1 và 3 khớp checksum, khối 2 không khớp → in ra 1 (số khối hỏng) và dòng tiếp theo 2 (chỉ số khối hỏng).
In ra hai dòng:
Ví dụ:
Đầu vào:
0
Đầu ra:
0
Đầu vào:
1
62e2f4574144e4942f3b04c35f89e72aedf885983b5a2f267fd60406f4d2aaa2
blockA
Đầu ra:
0
Đang tải editor...