.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » cript

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
cript


Timp maxim de execuţie / test:
0.15s
Memorie totala disponibilă / stivă:
2MB / 1MB

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 succesi¬unea 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.

Cerinţă

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.

Exemple

cript.incript.outExplicaţii
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’

autor: Prof. Lucia Miron
propunător: Prof. Emanuela Cerchez
Colegiul Naţional ″Emil Racoviţă″
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la ONIG 2015: scadere, tv1, nebuni, spioni1, ssk, magic7, restaurare, sort2dist, echer, lightbot, teren1, iepuras1, inventie
De acelaşi autor: cuburi3, banda1, copaci1, matrice4, fazanr, expozitie, teme, macheta, becuri2, proiecte, xyz, dineu, bete1, onigim, doitrei, cristal, prajituri, nuclee
Despre şiruri de caractere: scp, ab, sl, nrcuv, rv, kpal, chimie, reteta, replace, grad, index, cod, text, decript, spam, complex, cifre, anagrame, balbe, criptmat, mesaj, maxim, astre, sablon, formule, ed, balls, vocale, prop, bacan, novel, bitslang, text2, ref, scor2, convert, cod2, compress, pstring, sub, rima, program1, sms, circular, randuri, cezar, bifo, joc9, pal, bare, joc12, fractie, cod3, tunel, csir, top, ratina, cifru1, limbaj, adun, ecuatii, dir, paritate, virus, sir6, mesaj2, text1, sirul, ogorul, rez, sablon1, anag, sir8, seti, secvsir, dp, cuvant, strings, antipatie, fractie1, links, ordonare, text3, concat, codif, cheie, alfabetar, cuvinte2, comp, litere, mxl, mesaj3, expresie2, grad2, antic, zuma, expeval, combcuv, lgdrum, subtitrare, compresie, zigzag, azeval, fraze, subsecvente, showroom, rebus1, agenda, opmult, betisoare, reziston, clase, vot2, ecp, smiley, charlie, scadere, spioni1, sablon3, expand, culori3, virgule
Despre matrice: vopsea, harta, opmat, sarpe, light, magic2, tetris, origami, concurs, iepuras, tribile, criptmat, cutie, patrate, 3d, pajura, perspic, vecini2, livada, matrice3, kafka, erdos, grup, scor2, reteta2, rezervatie, scoici, tablou, game, stea, submatrix, cifru, jokes, oua, trecere, na, dotnet, renju, ghici, mere1, agitatie, lacuri, sotron, desen1, camion, ceas1, fibo, parc, excursia, matricea, zidar, joc6, log, concurs2, cladiri, dist, centru, robinson, cuburi2, joc8, joc9, romeo, adevar, soricel2, avere, joc11, vizibil, sah1, blockout, masina3, lsort, anticip, matrice1, evantai, spion, pereti, zumzi, roboti, placare, tabel, ocr, numere7, lacusta, becuri, sir5, flori, cartele, furnica, pavare, poarta, rj, peri, poligon2, sablon1, gradina, matrice4, poartas, balcon, submdisj, v, matrx, figura, neuroni, raze, roboti1, bila, iepurasi, colorare, mat, submatrix1, simetric1, plaja, xor2, guess, albine1, joct, alfabetar, stele, tablou1, alpinist, cladire, cri, grupe2, el, mahjong, sir9, acces, tort1, joc17, mesaj3, zar1, xy, poteci, avioane, broscute, safeu, acoperire1, radioactiv, robot4, lcdr, jb, slide, maxtri, dame, triunghi4, elicop, compresie, mijloc, cubulete, romb, 2ndesc, medalion, bile6, zigzag, puncte5, intersectii, matd3, matrixdel, speed, seif1, traseu2, incadrare, betasah, zona, latin, zmax, amestec, sudoku1, gradina1, spider, zone, bemo, rombul, interclasare, rebus1, tabla, arrows, pseudobil, patrat1, rascoala, harta2, relatii, lasere, defrag, matcnt, ssdj, ssk, teren1, fence, cifre6
Despre operaţii pe biţi: barfa, cod, gray, cartonase, plimbare, excursie, xor, vector, ro, nrbinar, radio, chimie2, dans, metro, caini, newcomp, viteza, bcast, aritma, pereti, morse, paritate, gradina, xor2, game1, efect, gxor, lgdrum, qtri, patrate7, panda
Chestionare recomandate
surse trimise | ajutor