Una dintre cele mai vechi metode de criptare, cunoscută sub numele de codificare Cezar, presupune următoarele: cunoscându-se cele de litere mari ale alfabetului şi un număr natural , numit cheie, se înlocuieşte fiecare literă din textul care trebuie codificat cu cea de a -a literă care o urmează în alfabet, spaţiile dintre cuvinte rămânând nemodificate. Astfel, dacă trebuie codificat textul CODIFICARE CEZAR
cu cheia , se va obţine textul codificat HTINKNHFWJ HJEFW
. Se observă că, în cazul în care şirul literelor din alfabet se termină, se reia numărarea de la început (circular). Acest gen de codificare este însă extrem de uşor de "spart". Să ne imaginăm atunci un alt mod de codificare.
Presupunem, ca şi în cazul de mai sus, că textul de codificat conţine doar litere mari şi spaţii. Pentru codificare se procedează astfel:
- se elimină spaţiile
- se împarte textul obţinut în segmente de câte litere şi se aşează segmentele unul sub altul; ultimul segment poate fi mai scurt
- se alege o secvenţă de numere naturale ( chei) , , , şi se codifică fiecare coloană utilizând codificarea Cezar cu cheia corespunzătoare coloanei ( - coloana , - coloana , )
- se reface textul punând segmentele la locul lor apoi spaţiile la locul lor
De exemplu, dacă avem de codificat textul OLIMPIADA NATIONALA DE INFORMATICA DE LA GALATI
se va obţine, pe rând, la cei patru paşi
OLIMPIADANATIONALADEINFORMATICADELAGALATI
-
OLIMPIADAN ATIONALADE INFORMATIC ADELAGALAT I
- Fie cheile alese (, , , ) = (, , , , , , , , , )
PNJPQMBIAT BVJRMEMFDK JPGRSQBYII BFFDBKBQAZ J
PNJPQMBIATBVJRMEMFDKJPGRSQBYIIBFFOBKBQAZJ
PNJPQMBIA TBVJRMEMF DK JPGRSQBYIIB FF OB KBQAZJ
Cerinţă
Scrieţi un program care să realizeze decodificarea unui text codificat în modul arătat mai sus.
Date de intrare
Fişierul de intrare cezar.in
conţine pe prima linie textul codificat. Linia a doua a fişierului va conţine numere naturale separate prin câte un spaţiu reprezentând cheile de codificare.
Date de ieşire
Fişierul de ieşire cezar.out
va conţine pe prima linie textul decodificat.
Restricții și precizări
- lungimea textului codificat nu depăşeşte caractere
- caracterele folosite sunt litere mari ale alfabetului şi caracterul spaţiu
- cheile au valori cuprinse între şi
- literele alfabetului sunt, în ordine:
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
Exemplu
cezar.in
PPLKNS NIUKUK
1 2 3 4 5 6 7 8 9 10
cezar.out
ONIGIM GALATI