#1219
Cript
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.
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.
ONI GIM 2015, Clasa a VII-a
Problema | Cript | Operații I/O |
cript.in /cript.out
|
---|---|---|---|
Limita timp | 0.1 secunde | Limita memorie |
Total: 2 MB
/
Stivă 1 MB
|
Id soluție | #51644315 | Utilizator | |
Fișier | cript.cpp | Dimensiune | 2.05 KB |
Data încărcării | 26 Iulie 2024, 18:27 | Scor / rezultat | 100 puncte |
cript.cpp: In function 'int main()': cript.cpp:62:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(i = 0; i < caractere.size(); i++) ^ cript.cpp:71:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while(lim < caractere.size()) ^ cript.cpp:74:18: warning: statement has no effect [-Wunused-value] for(i; i <= lim - 1; i++) ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | OK. | 5 | 5 | ||
1 | 0 secunde | OK. | 5 | 5 | ||
2 | 0 secunde | OK. | 5 | 5 | ||
3 | 0.004 secunde | OK. | 5 | 5 | ||
4 | 0 secunde | OK. | 5 | 5 | ||
5 | 0.008 secunde | OK. | 5 | 5 | ||
6 | 0.004 secunde | OK. | 5 | 5 | ||
7 | 0 secunde | OK. | 5 | 5 | ||
8 | 0 secunde | OK. | 5 | 5 | ||
9 | 0 secunde | OK. | 5 | 5 | ||
10 | 0 secunde | OK. | 5 | 5 | ||
11 | 0.004 secunde | OK. | 5 | 5 | ||
12 | 0.004 secunde | OK. | 5 | 5 | ||
13 | 0.004 secunde | OK. | 5 | 5 | ||
14 | 0.016 secunde | OK. | 5 | 5 | ||
15 | 0.02 secunde | OK. | 5 | 5 | ||
16 | 0.016 secunde | OK. | 5 | 5 | ||
17 | 0 secunde | OK. | 5 | 5 | ||
18 | 0 secunde | OK. | 5 | 5 | ||
19 | 0.008 secunde | OK. | 5 | 5 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Cript face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.