Fișierul intrare/ieșire cript.in, cript.out Sursă ONI 2015 clasa a 7-a
Autor Lucia Miron Adăugată de avatar Herbert2002 Herbert Mohanu Herbert2002
Timp de execuție pe test 0.15 sec Limită de memorie 2048 KB
Scorul tău N/A Dificultate stea de rating de tip fullstea de rating de tip fullstea de rating de tip fullstea de rating de tip emptystea de rating de tip empty
open book Poți vedea testele pentru această problemă accesând atașamentele .

Cript (clasa a 7-a)

Ilinca a citit despre criptarea mesajelor, acum dorește să comunice cu prietena ei Miruna numai prin mesaje criptate folosind un sistem propriu de criptare.
Ilinca știe că fiecare caracter se reprezintă în memoria calculatorului pe 8 biți, în care se memorează scrierea în baza 2 a codului ASCII al caracterului respectiv. Pentru a cripta caracterul, Ilinca folosește o matrice pătratică având 8 linii (numerotate de la 0 la 7 de sus în jos) și 8 coloane (numerotate de la 0 la 7 de la stânga la dreapta). Pe prima linie a matricei Ilinca scrie cei 8 biți reprezentând scrierea în baza 2 a codului ASCII al caracterului, pe poziția 0 fiind scrisă cifra cea mai semnificativă (corespunzătoare lui 27). Pe fiecare dintre următoarele 7 linii din matrice scrie permutarea circulară cu o poziție la stânga a liniei anterioare. Ordonează lexicografic liniile matricei formate și definește cript-ul caracterului ca fiind succesiunea de biți reprezentată de ultima coloană din matrice, parcursă de sus în jos, urmată de indicele liniei din matrice pe care a ajuns după ordonarea lexicografică reprezentarea în baza 2 a codului ASCII al caracterului. Dacă există linii egale în matrice, după ordonarea lexicografică acestea își vor păstra ordinea relativă inițială, astfel că linia conținând reprezentarea în baza 2 a codului ASCII al caracterului va fi prima dintre acestea.
Pentru a cripta un mesaj, Ilinca scrie în ordine cript-urile caracterelor din mesajul respectiv.
Miruna cunoaște sistemul de criptare al Ilincăi, ca urmare știe să decripteze mesajele primite.

Cerinta

Scrieți un program care să rezolve următoarele două cerințe:
1. citește un mesaj și afișează mesajul criptat conform sistemului Ilincăi;
2. citește un mesaj criptat conform sistemului Ilincăi și determină mesajul decriptat.

Date de intrare

Fișierul de intrare cript.in conține pe prima linie un număr natural c, care poate fi 1 sau 2, reprezentând cerința ce urmează a fi rezolvată. Pe a doua linie a fișierului se află un șir de caractere.

Date de ieșire

Fișierul de ieșire cript.out va conține o singură linie pe care va fi scrisă criptarea șirului din fișierul de intrare (dacă c=1), respectiv decriptarea șirului din fișierul de intrare (dacă c=2).

Restricții

• Lungimea mesajului necriptat este nenulă și nu depășește 30000.
• Caracterele din șirul citit au coduri cuprinse între 32 și 127.
• Spunem că șirul s1 precedă în ordinea lexicografică șirul s2 dacă există o poziție k astfel încât s1[i]==s2[i] pentru orice i<k și s1[k]<s2[k].
• Pentru teste valorând 50% din punctaj cerința este 1

Exemplu

cript.in cript.out Explicatii
1
AB
100010004101000004
Caracterul ′A′ are codul ASCII 65 reprezentarea pe 8 biți fiind 01000001
Dupa ordonare, linia reprezentării lui ′A′ are indicele 4. Cript-ul caracterului ′A′ este 100010004
Se procedează analog pentru ′B′
2
101110001111000002
VI
101110001-cript-ul caracterului ‘V’
111000002-cript-ul caracterului ’I’

Trebuie să te autentifici pentru a trimite soluții. Click aici

Indicii de rezolvare

Arată 4 categorii