Szyfr Cezara
Limit pamięci: 256 MB
W tym zadaniu Twój program powinien realizować algorytm szyfrowania i odszyfrowywania
danych, który był już używany w czasach Juliusza Cezara.
Szyfrowanie tekstu polega na szyfrowaniu kolejnych jego liter (pozostałe znaki pozostawiamy bez zmian).
Każda litera zostaje zamieniona w -tą następną w alfabecie
(
jest stałą szyfru), przy czym jeżeli taka nie istnieje (wychodzimy za z), to
odliczanie jest kontynuowane z powrotem od a.
Szyfrowanie zachowuje wielkość liter (tj. małe przechodzą na małe, a wielkie na wielkie).
Zakładamy, że w tekście występują jedynie litery alfabetu angielskiego (małe i wielkie).
Dla przykładu, jeżeli , to małe litery tekstu przechodzą na małe litery szyfru według poniższej tabelki:
litera | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
szyfr | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | a | b | c | d | e |
Wielkie litery tekstu przechodzą na wielkie litery szyfru zgodnie z tą samą regułą.
Napisz program, który
wczyta tekst do zaszyfrowania lub odszyfrowania i stałą
i zaszyfruje lub odszyfruje ten tekst, w zależności od polecenia.
Wejście
Pierwszy wiersz wejścia zawiera jedną liczbę 1 lub 2.
Liczba 1 oznacza "szyfruj", a liczba 2 - "odszyfruj".
Drugi wiersz wejścia zawiera stałą (
).
Trzeci i ostatni wiersz wejścia zawiera tekst, złożony wyłącznie z liter (małych bądź dużych) i/lub znaków interpunkcyjnych (bez odstępów).
Tekst będzie zawierał co najmniej jeden znak i co najwyżej
znaków.
Wyjście
Pierwszy i jedyny wiersz wyjścia powinien zawierać tekst po zaszyfrowaniu bądź odszyfrowaniu.
Przykład
Dla danych wejściowych:
1 5 Szyfr_Cezara_jest_skuteczny!
poprawną odpowiedzią jest:
Xedkw_Hjefwf_ojxy_xpzyjhesd!
a dla danych wejściowych:
2 5 Xedkw_Hjefwf_ojxy_xpzyjhesd!
poprawnym wynikiem jest:
Szyfr_Cezara_jest_skuteczny!
natomiast dla danych wejściowych:
1 24 xyz
poprawnym wynikiem jest:
vwx