Fişierul intrare/ieşire:cezar1.in, cezar1.outSursăONI 2005 clasa a 7-a
AutorMarinel SerbanAdăugată dedumitriu_razvanRazvan Dumitriu dumitriu_razvan
Timp execuţie pe test0.1 secLimită de memorie2048 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise

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.incezar1.out
PPLKNS NIUKUK
1 2 3 4 5 6 7 8 9 10
ONIGIM GALATI
Trebuie sa te autentifici pentru a trimite solutii. Click aici