Fișierul intrare/ieșire | cezar1.in, cezar1.out | Sursă | ONI 2005 clasa a 7-a |
---|---|---|---|
Autor | Marinel Șerban | Adăugată de | Razvan Dumitriu • dumitriu_razvan |
Timp de execuție pe test | 0.1 sec | Limită de memorie | 2048 KB |
Scorul tău | N/A | Dificultate |
Vezi soluțiile trimise | Statistici
Cezar1 (clasa a 7-a)
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) k1, k2, ..., k10 și se codifică fiecare coloană utilizând codificarea Cezar cu cheia corespunzătoare coloanei (k1 – coloana 1, k2 -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
1. OLIMPIADANATIONALADEINFORMATICADELAGALATI
2. OLIMPIADAN ATIONALADE INFORMATIC ADELAGALAT I
3. Fie cheile alese (k1, k2, ..., k10) = (1,2,1,3,1,4,1,5,0,6)
PNJPQMBIAT BVJRMEMFDK JPGRSQBYII BFFDBKBQAZ J 4. 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 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.
Date de ieșire
În fișierul de ieșire cezar1.out va conține pe prima linie textul decodificat.
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
Exemplu
cezar1.in | cezar1.out |
---|---|
PPLKNS NIUKUK 1 2 3 4 5 6 7 8 9 10 |
ONIGIM GALATI |