Trong các thử thách CTF (Capture The Flag) mảng mật mã học, mã hóa Caesar là kỹ thuật cổ điển đơn giản nhất: mỗi chữ cái in hoa A-Z được dịch chuyển vòng tròn k vị trí trong bảng chữ cái (26 chữ cái). Công thức mã hóa cho ký tự có chỉ số p (A=0, ..., Z=25): c=(p+k)mod26.
Bạn thu được một đoạn bản mã (ciphertext) trong một máy chủ CTF và biết trước bước dịch k đã dùng để mã hóa. Hãy viết chương trình giải mã để tìm lại flag gốc.
Quy ước: chỉ các chữ cái in hoa A-Z bị dịch chuyển; mọi ký tự khác (số, dấu {, }, _, khoảng trắng, ...) giữ nguyên không đổi và không ảnh hưởng đến việc dịch chuyển.
Ví dụ: với k=3, bản mã FWI{FDHVDU_FLSKHU} được giải mã thành CTF{CAESAR_CIPHER} (mỗi chữ cái được dịch lùi 3 vị trí, ví dụ F lùi 3 thành C, W lùi 3 thành T).
Dòng 1: số nguyên k (0≤k≤25) — số bước dịch đã dùng khi mã hóa.
Dòng 2: chuỗi bản mã (có thể rỗng), độ dài không quá 200 ký tự, chỉ gồm chữ in hoa A-Z, chữ số, dấu {, }, _ và khoảng trắng.
In ra một dòng duy nhất là chuỗi bản rõ (plaintext) sau khi giải mã.
Ví dụ:
Đầu vào:
3
FWI{FDHVDU_FLSKHU}Đầu ra:
CTF{CAESAR_CIPHER}
Đầu vào:
0
CTF{ZERO_SHIFT}Đầu ra:
CTF{ZERO_SHIFT}
Đang tải editor...