|
||||||||||||||||||||||
ultima problemă
grupă: mică
sursă: OMI 2016 ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
|
Eroul acestei probleme, Nafets, si-a cumparat un al doilea calculator. Bineinteles, el doreste acum sa lege cele doua calculatoare personale in retea. Totusi, softul de transfer de fisiere prin retea oferit de compania Moccasoft este mult prea costisitor. De aceea, Nafets s-a decis sa scrie el insusi pachetul necesar transferului de fisiere. Cautand pe Net informatii despre softul pentru retea, a aflat ca mediul fizic in care se transmite informatia prin retea este instabil si la transferul de date pot aparea erori. De aceea, el s-a decis sa minimizeze posibilitatea aparitiei unor erori prin calcularea unei sume de control pentru fiecare fisier transferat. Dupa un studiu indelungat, Nafets a ales un algoritm care i-a placut foarte mult. Algoritmul primeste la intrare un numar magic N si fisierul care trebuie transferat. Algoritmul trebuie sa priveasca fisierul de intrare ca un numar in baza 256, numar pe care il vom numi M (primul octet din fisier reprezinta cea mai semnificativa cifra a numarului M, urmatorul octet a doua cea mai semnificativa cifra samd). Suma de control pentru fisier este reprezentata de un numar X cu proprietatea ca restul impartirii lui MX la N este 0. MX reprezinta numarul in baza 256 obtinut prin concatenarea lui M cu numarul X. La operatiunea de concatenare, daca X are mai putin de 3 cifre semnificative (in baza 256), lui X i se vor adauga in stanga cifre de 0 pana cand se obtin 3 cifre (in baza 256). Cerinta Deoarece Nafets nu a mai programat de mult timp, va roaga pe voi sa scrieti modulul care calculeaza aceasta suma de control.. Date de intrare Pe prima linie a fisierului newcomp.in se gaseste numarul N, scris in baza 10. Pe urmatoarea linie se gaseste fisierul care trebuie transferat, afisat ca o secventa de cifre in baza 256 separate prin spatiu. O cifra in baza 256 va fi reprezentata ca un numar intre 0 si 255 inclusiv, numar scris in baza 10. Date de iesire Pe singura linie a fisierului newcomp.out afisati numarul calculat X, in baza 10. In cazul in care exista mai multe numere X care satisfac cerintele, afisati oricare dintre ele. (! asigurati-va ca linia se termina cu caracterul sfarsit de linie!) Restrictii
Exemplu
Explicatii suplimentare In baza 256, reprezentat pe 3 cifre, numarul 12 este: 000.000.012(256), unde punctul separa cifrele intre ele. Numarul obtinut prin concatenarea lui M cu X este: 255.234.133.000.000.012(256). Impartind acest numar prin 13, obtinem restul 0. Ciobaca Stefan propunător: Prof. Emanuela Cerchez emanuela.cerchez@gmail.com Articole recomandate
Probleme recomandate
|
|||||||||||||||||||||
surse trimise | ajutor |