← Back to topics
Topic

cifre - mi treba poefikasen algoritam

b
bojarovski
Zdravo na site ovde, pred nekoe vreme pocnav da gi resavam zadacite i moram da kazam deka se dosta interesni (ako nemam uploaduvano resenija, ne znaci deka ne sum gi razgleduval i probal da gi resam :)) samo taka prodolzete.
E sega na temata, za zadacava lesno mi tekna ednostaven algoritam, za broevi so dve i poveke cifri gi stavam cifrite od brojot vo stek (od desno kon levo) pa potoa gi vadam edna po edna dodeka ne sum stignal do taa sto mi treba (cifrata n).
Problemot e vo toa sto iako algoritmot funkcionira, mislam deka e neefikasen i za golemi broevi prekoracuva vremenski limit.
Kodot mislam deka ne moze dovolno da se optimizira, sto znaci za da ja zgolemam brzinata mi treba poefikasen algoritam... a mene takov ne mi teknuva - pa ako nekoj znae ili ima idea sekakva pomos e dobredojdena.:)

Pozdrav,
Stefan.

P.S. Daj sredete go logiranjevo, ne mozam 10 min. da ostanam logiran...
r
renovator
imas 9 jednocifrenih brojeva, 90 dvocifrenih, 900 trocifrenih itd.
tebi se trazi n-ta cifra.
znaci, skidas broj i-tocifrenih sa n ( n = n-i*broj_i-tocifrenih ) sve dok ne dodjes dotle da je broj i*(broj_i-tocifrenih) >= n. Usput dodajes na trenutni_broj , broj_i-tocifrenih.

Onda znas da ti je cifra koja se trazi u broju trenuti_broj + (n+i-1)/i (celobrojno)..
Malo sam zbrzio, ali moze da posluzi ;)
b
bojarovski
Fala mnogu za pomosta. Pretpostavuvav deka ima nekoe "matematicko" resenie...
Iako, mene toa nikogas nemase da mi tekne... :-\
Ima li od nekade da se naucat vakvi "finti" za matematicki problemi ili sve e do resavanje mnogu zadaci i iskustvo ???