== include(page="template/taskheader" task_id="cezar1") ==
Poveste și cerință...
Una dintre cele mai vechi metode de criptare, cunoscută sub numele de codificare Cezar, presupune următoarele: cunoscându-se cele 26 de litere mari ale alfabetului și un număr natural k, numit cheie, se înlocuiește fiecare literă din textul care trebuie codificat cu cea de a k-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 k=5, 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:
1. se elimină spațiile
2. se împarte textul obținut în segmente de câte 10 litere și se așează segmentele unul sub altul; ultimul segment poate fi mai scurt
3. se alege o secvență de 10 numere naturale (10 chei) k[~1~], k[~2~], ..., k[~10~] și se codifică fiecare coloană utilizând codificarea Cezar cu cheia corespunzătoare coloanei (k[~1~] - coloana 1, k[~2~] -coloana 2, ...)
4. 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
pre. 1. OLIMPIADANATIONALADEINFORMATICADELAGALATI
pre.. 2.
OLIMPIADAN
ATIONALADE
INFORMATIC
ADELAGALAT
I
p. 3. Fie cheile alese (k[~1~], k[~2~], ..., k[~10~]) = (1,2,1,3,1,4,1,5,0,6)
pre.. PNJPQMBIAT
BVJRMEMFDK
JPGRSQBYII
BFFDBKBQAZ
J
4. PNJPQMBIATBVJRMEMFDKJPGRSQBYIIBFFOBKBQAZJ
PNJPQMBIA TBVJRMEMF DK JPGRSQBYIIB FF OB KBQAZJ
h2. Cerință
Scrieți un program care să realizeze decodificarea unui text codificat în modul arătat mai sus.
h2. Date de intrare
Fișierul de intrare $cezar1.in$ ...
Fișierul de intrare $cezar1.in$ conține pe prima linie textul codificat. Linia a doua a fișierului va conține 10 numere naturale separate prin câte un spațiu reprezentând cheile de codificare.
h2. Date de ieșire
În fișierul de ieșire $cezar1.out$ ...
În fișierul de ieșire $cezar1.out$ va conține pe prima linie textul decodificat.
h2. Restricții
* $... ≤ ... ≤ ...$
* Lungimea textului codificat nu depășește 255 caractere
* Caracterele folosite sunt litere mari ale alfabetului și caracterul spațiu
* Cheile au valori cuprinse între 0 și 25
* 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
h2. Exemplu
table(example).
table(example).
|_. cezar1.in |_. cezar1.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
| PPLKNS NIUKUK
1 2 3 4 5 6 7 8 9 10
| ONIGIM GALATI
|
h3. Explicație
...
== include(page="template/taskfooter" task_id="cezar1") ==