#CT00041. Mật mã hồi tiếp (Feedback Cipher)
Mật mã hồi tiếp (Feedback Cipher)
Mật mã hồi tiếp (Feedback Cipher)
Phiên bản: Phước Hưng OJ Extended
Đề bài
Dùng bảng chữ cái thường a..z với giá trị a , b , , z .
Ban đầu khóa hiện tại là , với . Ở vị trí , gọi là giá trị của ký tự gốc và là giá trị của ký tự đã mã hóa.
Khi mã hóa:
Sau khi xử lý vị trí , khóa được cập nhật bằng:
Khi giải mã, tại vị trí ta khôi phục:
sau đó khóa tiếp tục được cập nhật bằng chính giá trị vừa khôi phục.
Cho chế độ . Nếu , hãy mã hóa xâu . Nếu , hãy giải mã xâu . Việc xử lý luôn thực hiện từ trái sang phải.
Input
- Dòng 1 chứa hai số nguyên và , trong đó và .
- Dòng 2 chứa xâu chỉ gồm các chữ cái thường
a..z.
Output
In xâu thu được sau khi thực hiện đúng chế độ đã cho.
Subtask
- Subtask 1 (40 điểm): .
- Subtask 2 (60 điểm): .
Ví dụ
Ví dụ 1
Input
1 3
hello
Output
kpbnc
Giải thích
Ban đầu . Ký tự h có giá trị , nên ký tự mã hóa đầu tiên có giá trị , tức k.
Sau đó khóa được cập nhật thành . Tiếp tục xử lý từ trái sang phải cho các ký tự còn lại, xâu kết quả là kpbnc.
Ví dụ 2
Input
2 3
kpbnc
Output
hello
Giải thích
Ban đầu . Ký tự mã hóa k có giá trị , nên ký tự gốc đầu tiên có giá trị , tức h.
Khóa được cập nhật bằng giá trị ký tự gốc vừa khôi phục. Tiếp tục theo đúng quy tắc, ta thu được xâu hello.
Liên quan
Trong các cuộc thi sau:
Phước Hưng - Kỳ Thi HSG Lớp 9 (Chuyên đề Xử Lý Chuỗi) - Đề Số 3