Trong mật mã học, Mật mã Caesar (hay còn được gọi là Mật mã của Caesar, Mật mã chuyển vị, Mã của Caesar hay Chuyển vị Caesar) là một trong những kỹ thuật mã hóa đơn giản và phổ biến nhất. Đây là một dạng mật mã thay thế, trong đó mỗi ký tự trên văn bản thô sẽ được thay bằng một ký tự khác, có vị trí cách nó một khoảng xác định trong bảng chữ cái. Ví dụ, nếu dịch chuyển sang trái 3 bước, \(D\) sẽ trở thành \(A\), \(E\) sẽ trở thành \(B\), v.v..
Để mã hóa, người ta sẽ chọn ra một khóa \(k\): chính là số bước dịch chuyển sang phải. VD với \(k = 4\) thì ta có bảng chuyển đổi sau
Để mã hóa, ta thay chữ cái ở dòng trên bằng chữ cái ở vị trí tương ứng ở dòng dưới.
Yêu cầu: Cho trước khóa \(k\) và xâu tin nhắn, hãy mã hóa theo quy luật trên.
Input
- Dòng đầu chứa số nguyên \(k (0 \le k \le 10^6)\)
- Dòng tiếp theo chứa xâu \(S (1 \le |S| \le 1000)\) (chỉ gồm dấu cách hoặc các kí tự Latin in hoa)
Output
- Một dòng duy nhất chứa xâu đã mã hóa
Chấm điểm
- Subtask \(1 (50\%): k < 10\)
- Subtask \(2 (50\%): k \le 10^6\)
Ví dụ
Input
2
ACCEPTED
Output
CEEGRVGF
Lưu ý
Với dấu cách, ta giữ nguyên chứ không mã hóa nó.
Chú thích: một số hình minh họa khác:
Vòng bên ngoài là kí tự gốc, vòng bên trong là kí tự đã được mã hóa, còn số ghi ở giữa chính là khoảng cách dịch chuyển.
Bình luận