Trong thực tế, văn bản cần mã hóa thường chứa cả chữ hoa, chữ thường, chữ số, dấu câu và khoảng trắng. Một cách mở rộng tự nhiên của mật mã Caesar là: chỉ dịch chuyển các ký tự chữ cái (giữ nguyên hoa/thường của chữ cái đó), còn tất cả ký tự khác (số, dấu câu, khoảng trắng, ...) được giữ nguyên tại đúng vị trí của chúng.
Khóa dịch chuyển k có thể là số âm; quy ước dịch chuyển vẫn tính theo modulo 26, tức là dịch k tương đương với dịch ((kmod26)+26)mod26.
Cho xâu văn bản S và khóa nguyên k, hãy mã hóa S theo quy tắc trên.
Ví dụ: với S= "Hello, World!" và k=3, kết quả là "Khoor, Zruog!" (dấu phẩy, khoảng trắng và dấu chấm than được giữ nguyên; H→K vẫn hoa, e→h vẫn thường).
Dòng 1: xâu văn bản S (độ dài từ 0 đến 1000 ký tự, có thể chứa chữ hoa, chữ thường, chữ số, dấu câu và khoảng trắng; không chứa ký tự xuống dòng). Dòng 2: số nguyên k (−109≤k≤109).
In ra một dòng duy nhất là văn bản đã mã hóa, giữ nguyên độ dài, vị trí và định dạng hoa/thường như S.
Ví dụ:
Đầu vào:
abcXYZ 123
1
Đầu ra:
bcdYZA 123
Đầu vào:
Hello, World!
3
Đầu ra:
Khoor, Zruog!
Đang tải editor...