← Back to topics
Topic

[Proizvod]

b
basic
moze li neko malo da mi pomogne jer ne mogu zadnja 2 test primera da resim posto je uglavnom prekoraceno vremensko ogranicenje
r
renovator
U petlji :
prvo mnozis broj sa brojacem ( P := P*i;)
zatim , dok je zadnja jedinica 0 , brises je.
I onda P izmenis po modulu 10000.
...
d
dimitar
Eh renovatoru, u onaj thread za z-magija predlazes nesto, a ovde uradis
sasvim suprotno. Mesto da mu kazes ideju spored koju si ti resio zadatak,
ti mu kazes:
imas for petlje, u nego mnozis p, brises nule i apdejtujes p po mod 100000.

I sta ce on razume od ovo? Dok basic ili neko drug dekriptuje zasto sluzi taj
for, ili zasto se brise nule...
r
renovator
covek , ne verujem da bi neko pokusavao da radi zadatke sa ovog sajta a da ne zna bar osnove programskog jezika.
No , i ako ne zna on bi rekao da je problem u jeziku a ne u ideji , i ne bi postavio ovaj topic u ovoj temi.
Kao drugo , nemoj da pricas nesto sto ja nisam rekao... ( napomenuo sam da ne mislim na detalje koda ).
@basic Ako ti jos predstavlja problem ovaj zadatak , javi pa cu ti poslati kod.
poz.
r
renovator
i jos nesto :
ako se slazes sa onim sto sam izneo u topic-u "z-magija .." i ako se ja toga nisam drzao(mada mislim da jesam) , onda ti pokusaj da postupis tako a ne mene da kritikujes.Ovde se radi o valjanosti a ne o meni .
d
dimitar
A zar ti nisi reko da se daje ideja za zadatku a ne negovo resenje?
I sta to ti mislis da ono sto si napisao, to nije kod? Ja nisam
mislio da on ne zna programiranje, nego da ne moze da dekriptuje ideja
koja stoi u taj kod sto si ti dao. Sta bi on trebalo da uradi: samo
da prevedi taj pseudokod u pascal program, i on je resio zadatak, a
nema pojma zasto i kako raboti taj program.

Evo kako bi ja postupio:
Znaci trazi se poslednata cifra od proizvodot na n brojevi. Posto mnozenjeto
se vrsi od cifri od pomal red kon cifri od visi red, nam uopste ni ne
trebaju te cifri od visi red (posto trazimo cifra od najnizi red). Znaci
u rezultatot gi smestuvame samo nekolkute posledni cifri (za ovaj zadatak to su
posledni 5 cifri), i kao sto se trazi u zadatak pazime da posledna cifra u
rezultat nije 0.
b
boba5551
Problem ti prave petice (mislim na one brojeve koji stvaraju nule), odnosno nulu moze da ti stvori samo broj koji ima 5 kao delilac. Uvek ces imati dovoljno parnih brojeva da pomnozis sa necim 5 da dobijes 10. Nadam se da vec polako kontas ideju. Ti treba da ignorises te petice iz broeva, ali takodje koliko si petica ignorisao u tom prozivodu, treba toliko i dvojki da ignorises! Kako ces to resiti je samo nacin implementacije. Ja sam prvo prebijao sve moguce petice, pa tek onda kasnije isao i mnozio, s tim da pamtim samo prozivod po modulu 10. U svakom slucaju nadam se da ti je jasnije i da sam bar malo pomogao :)
b
basic
hvala narode, ukapirao sam i sad radi:

program proizvod;
var
n,i,p:longint;
begin
read(n);
p:=1;
for i:=1 to n do
begin
p:=p*i;
while p mod 10=0 do p:=p div 10;
p:=p mod 100000;
end;
writeln(p mod 10);
end.


b
bocete
Imam problem sa ovim zadatkom. Uspeo sam da ga reshim ovako kao ste savetovali ovde josh ranije ali sam sada probao da malo ubrzam taj proces. 10! se "zavrshava" cifrom 8, pa sam onda, umesto da koristim for za sve brojeve do trazhenog, prvo izdvojio 8^<broj desetica>, i onda izmnozhio ostatak. To reshenje ne daje tachan odgovor za brojeve chija je cifra jedinica vetja od 4, a sami su vetji od 14.
Probao sam da izbacim svaki broj koji se zavrshava cifrom 5, i taj broj -3 (da se zavrshi sa 2) ali ne ide.
Da bi mi lakshe pomogli, za recimo broj 15:
tachno reshenje je 15! = 1307674368000, dakle 8.
po mome je to 8*3*4 (izbacio je 12 i 15) = 96, pa izbaci 6.
Ochigledno je da reshnje nije pravo, ali zashto?
r
renovator
ne smes da izbacis brojeve koji se zavrsavaju sa 2 i 5 vec samo da rezultat pomnozis poslednjom cifrom razlicitom od nule u njihovom proizvodu.Takodje moras da uvrstis i brojeve koji se zavrsavaju sa 0 tako sto ces isto uzeti njihovu poslednju cifru razlicitu od nule.
Nisam uradio zadatak na ovaj nacin tako da ne mogu sa sigurnoscu da ti tvrdim da je ovo sve sto ti treba.Ti malo razmisli i naci ce se resenje.Mada se gore navedeni kod izvrsava za 0 sec. ipak je ovako bolje ...mozda nekad zatreba.
mozda cu probati da uradim zad. na ovaj nacin pa cu ti javiti ako uspem.
poz.
n
niktrk
E ja sam se nesto bavio zadatkom proizvod malo vise,i dosta ljudi koji su ovaj zadatak izmedju ostalih i ja,resavali tako da su radili MOD 100000,dobice za ulaz 9375 izlaz 3 - sto je naravno netacno :) proverite
b
boba5551
Pa izgleda da je problem sto se kod tog nacina "nakupi" dosta 5ica i 2jki (9375 = 3 * 5^3) i onda predje pretpostavku za ogranicenje od 10^5, a u medjuvremenu se neke 2jke zanemare koje ne bi trebale... Mada dosta je nas brojalo 5ice i 2jke.
M
MilosRadic
klasicna ideja prover u for petlji od 1 do n je vrlo spora a javljaju se problemi sto brzo prelazi longint.
bolja ideja je sledece:
prozivod prvih 10 se zavsava sa 8 prvih 100 sa 8^10*8 i tako redom...