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] Vigenère - Giữ ký tự không phải chữ cái

    Vigenère giữ định dạng

    Khi mã hóa văn bản thực, ta thường giữ nguyên khoảng trắng, dấu câu, chữ số và giữ nguyên hoa/thường của chữ cái. Khóa chỉ "tiến" khi gặp một chữ cái.

    Thuật toán

    1. Chuẩn hóa khóa thành danh sách dịch chuyển (bỏ ký tự không phải chữ cái trong khóa).
    2. Duyệt bản rõ; với mỗi chữ cái, dùng ký tự khóa thứ j rồi tăng j.
    3. Chữ thường cộng trong vùng a-z, chữ hoa trong vùng A-Z, ký tự khác giữ nguyên.

    Ví dụ

    Khóa Lemon, bản rõ Attack at Dawn! → Lxfopv ef Rnhr!.

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

      Dòng 1: khóa. Dòng 2: bản rõ (có thể chứa khoảng trắng, dấu câu).

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

      1 ≤ độ dài khóa ≤ 100 (ít nhất 1 chữ cái); độ dài dòng 2 ≤ 1000.

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

      Một dòng: bản mã, giữ nguyên ký tự không phải chữ cái và hoa/thường.

    Ví dụ:

    Đầu vào:

    Lemon
    Attack at Dawn!

    Đầu ra:

    Lxfopv ef Rnhr!

    Giải thích:

    Khóa tiến qua từng chữ cái; dấu cách và '!' giữ nguyên.

    Đang tải editor...