| |
cnnb.MyForum.ro Forum de discutii, info CNNB |
|
|
|
|
|
 |
06/10/2007 17:45 |
 |
Autor |
Mesaj |
cripton Administrator

Data inscrierii: 27/Sep/2007 Mesaje: 9
|
| Titlul subiectului: Problema 2 |
|
|
newcomp
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 probabilitatea 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 întâia 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
* 0 < N < 2^24
* 0 <= X < 2^24
* lungimea fisierului de transferat nu depaseste 1MB
Exemplu
newcomp.in
13
255 234 133
newcomp.out
12
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.
Timp maxim de executie/test: 1 secunda |
|
| |
|
|
Nu puteti crea un subiect nou in acest forum Nu puteti raspunde in subiectele acestui forum Nu puteti modifica mesajele proprii din acest forum Nu puteti sterge mesajele proprii din acest forum Nu puteti vota in chestionarele din acest forum
|
|
|
|
|
|
|
|
Powered by phpBB © 2001, 2002 phpBB Group Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|