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

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


Timp maxim de executie/test:
0.1 secunde
Memorie totala disponibila/stiva:
16 MB/1 MB

O firma de securitate a angajat un grup de hackeri sa sparga codul pe care firma ar intentiona (in cazul in care hackerii esueaza) sa il utilizeze in sistemele proprii.
Codul utilizeaza o cheie foarte lunga, constituita dintr-o secventa de bytes, cheie care se schimba saptamanal. Cheia este utilizata pentru a codifica toate mesajele transmise de firma utilizand operatia XOR (disjunctie exclusiva) byte cu byte astfel:
Ei = Ki XOR Ci, unde Ei este al i-lea byte din mesajul codificat, Ki este al i-lea byte al cheii, iar Ci este al i-lea byte din mesajul original.

Hackerii nu au reusit sa determine cheia, dar au gasit un functionar de la departamentul transmisiuni care, pentru o sticla de palinca si 3 caltabosi, a fost de acord sa faca un lucru aparent nevinovat - a codificat un mesaj de doua ori: mai intai a codificat mesajul original, apoi a codificat mesajul original precedat de un caracter spatiu. Apoi a transmis ambele codificari.

Cerinta
Scrieti un program care, cunoscand mesajul original codificat (de lungime N bytes), precum si mesajul original precedat de un spatiu codificat (de lungime N+1 bytes), determina cei N+1 bytes din care este constituita cheia de codificare.

Date de intrare
Fisierul de intrare cod.in contine doua linii. Pe prima linie se afla 2N caractere, reprezentand in ordine cei N bytes ai mesajului original codificat. Cea de a doua linie contine 2N+2 caractere, reprezentand cei N+1 bytes ai mesajului precedat de spatiu codificat. Fiecare byte este specificat prin doua caractere din multimea {'0','1',...,'9','A', ...,'F'} ce reprezinta scrierea in baza 16 a continutului acelui byte.

Date de iesire
Fisierul de iesire cod.out va contine o singura linie ce va contine 2N+2 caractere, care reprezinta cei N+1 bytes ai cheii (specificata de asemenea in format hexazecimal ca si in fisierul de intrare).

Restrictii
1<= N <= 10000

Exemple

cod.in cod.out

05262C5269143F314C2A69651A264B 610728413B63072C52222169720B425E

41434D2049435043204E454552432732

prof. Marinel Serban
Liceul de Informatica "Grigore Moisil" Iasi
Contact:marinel_serban@yahoo.com


propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2007: perechi, teanc, index, light, copaci, teren, pizza, grupe, ecran, drum, soldati, factura, palma, decript, lbd, aven, cs, h, trenuri, sort, spam, complex, parent, holo, tren2, gray, siruri, arce, pasi, cifre, mgo, firma, joc, cartonase, vikingi, anagrame, balbe, vecini, balaur, tribile, conflicte, criptmat, mesaj, maxim, magic3, desen, plimbare, cutie, patrate, party, vagoane, robot, astre, trains, numere2, friends, tricouri, furtuna, net, baby, scaune, 3d, axa, bile2, vmem, pahare, termen, sablon, zapada, cuvinte, excursie, hd, pajura, pc, sir, cadere, pioni
De acelaşi autor: premii, finala, fractii, trei, manevre, nrcuv, an, vopsea, opmat, tramvai, bipal, kpal, sarpe, replace, factori, barca, perechi, grupe, reactii, factura, decript, trenuri, holo, cifre, firma, tribile, mesaj, tricouri, pajura, monede, programs, fry, repeat, red, pavaj, bacan, nrbinar, invest, cutie2, loc, depou, nr3, zid, felinare, sir3, sqr, carte, labirint, stea, count, evaluare, super, schimb, zaruri, vectori, spirala, desen1, rima, ceas1, romane, sms, bac, excursia, joc7, furnici, munte1, cezar, marcare, excursie1, culmi, sume1, schi, nr4, fractie, cod3, medii, tren3, top, sant1, imagine, ocr, perfect, pluton, reforma, alee, ceas2, paritate, borcane, aranjare, comoara1, culmi1, reactivi, submult, sablon1, sir8, sume2, dansatori, smith, tom, matriosca, asociativ, control1, calorii, immortal, concat, mat, cubinvers, mine, divizori, cheie, stelar, joct, minmax, cladire, adunscad, razboi, ore, oras1, sumprod, prisme, operatii1, lgdrum, unupatru, chibrituri, extraprime, prieten, rebus1, grindina, opmult, betisoare, antitero, clase, pagini, ornament, ordine, spioni1
Despre şiruri de caractere: scp, ab, sl, nrcuv, rv, kpal, chimie, reteta, replace, grad, index, 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, cript, scadere, spioni1, sablon3, expand, culori3, virgule
Despre operaţii pe biţi: barfa, 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, cript
Chestionare recomandate
surse trimise | ajutor