Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema Paginare  (Citit de 1733 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
KypY
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« : August 28, 2017, 13:59:48 »

Am incercat sa rezolv o problema de pe www.pbinfo.ro, insa nu inteleg rezultatul unor exemple si acest lucru imi da de gandit. Ori nu am inteles eu bine problema ori are o conditie lipsa... Problema suna cam asa:

Pentru numerotarea paginilor unei serii enciclopedice formate din unul sau mai multe volume se presupune că se folosesc n cifre. Fiecare volum are 300 de pagini, eventual cu excepţia ultimului volum care ar putea avea mai puţine.
Pentru n dat, să se determine numărul de volume din serie V şi numărul de pagini P ale ultimului volum. Dacă nu este posibilă numerotarea paginilor folosind n cifre, se va afişa mesajul IMPOSIBIL.

Exemplu 1:

Intrare: 999
Iesire: 2 105

Exemplu 2:

Intrare: 900
Iesire: IMPOSIBIL


Cele doua exemple de mai sus sunt oferite de site pentru a intelege mai bine problema.

Am gandit mai intai astfel:
-Fiecare secventa de numere consecutive cu acelasi numar de cifre l-am numit "prag"
-pentru primele 9 pagini sunt 9 cifre (pragul 1)
-pentru urmatoarele pagini pana la 99 sunt 90*2 (in total pana acum 189; pragul 2)
-pentru urmatoarele pagini pana la 999 sunt 900*3 (in total pana acum 2889; pragul 3)
-...
-Formula generala pentru numarul total de cifre: 9*Nc*10^(Nc-1) (unde Nc reprezinta numarul de cifre al ultimului prag)

Insa cand am incercat sa rezolv problema am obtinut rezultate diferite de aceea am verificat cele doua exemple de la coada la cap. Astfel, pentru primul exemplu, am pornit de la ce afiseaza programul dupa rulare: 2 volume, iar cel de-al doilea volum are 105 pagini.
In total 405 pagini. Si aici m-am folosit de ceea ce am gandit initial:
- 189 cifre pentru primele doua praguri (pentru primele 99 de pagini)
- din 405 de pagini, raman 306 pagini cu cate 3 cifre, care adunate la un loc sunt in numar de 918
- deci in total ar fi 189+918=1107 cifre, cu 108 cifre mai mult decat ar fi trebuit sa obtin (999)

De asemenea, pentru al doilea exemplu, rezultatul dat de site este IMPOSIBIL. Insa, din 900 daca scadem 189 (primele 2 praguri) raman 711 cifre si cum 3 divide 711, rezultatul nu este IMPOSIBIL.

Programul pe care l-am scris in c++ afiseaza pentru primul exemplu : 2 69 , iar pentru al doilea exemplu: 2 36.

Va rog sa ma faceti si pe mine sa inteleg daca am gresit undeva cu ceva. Tin sa mentionez ca nu sunt as in informatica si nu sunt obisnuit cu astfel de probleme (pana acum am facut mai mult matematica). Multumesc!
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines