← Back to topics
Topic

[z-tpr]

j
jerko
pada mi na 25. i 29. test primjeru zbog vremenskog prekoracenja, mogu li ih dobiti? Mozete li mi reci jel se moze rijesit zadatak ovim nacinom na koji ja rjesavam, prvo s pomocu eratostena nadjem proste brojeve, a zatim sa tri ugnjezdjene for petlje gledam mogu li dobit taj zbroj koji je izmedju a i b? hvala
b
boba5551
Probaj da popravis algoritam. Moze tako da se radi. Tako je zadatak i pisan, iako moze da se resi brzi dinamicki, ali namerno je napravljen ovako da bude i jedan lagan.
j
jerko
kako to dinamicki napravit? vjerojatno se oni zbrojevi tri broja mogu dobiti nekako brze, ali ne znam bas dinamiku, mozete li mi pomoc?
b
boba5551
Ma moze onako kako si posao, samo popravi taj alg. Moze brute-force, nema potrebe za dinamickim, samo sam spomenuo da moze, ali ne i da mora ;)
v
vasja
Meni pada na vecinu primera zbog vremenskog ogranicenja.
Imam 3 for-a .

for(i=2;i<=B;i++)
for(j=2;j<=B;j++)
for(k=2;k<=B;k++)

To je u najgorem slucaju 1555*1555*1555 , a to je previse ,tako?

Neka ideja kako da optimiziram?
b
boba5551
Za ovaj zadatak su data i prevelika ogranicenja, jer moze da se resi mnogo brze, ali ipak je dato da moze nesto slicno kao sto si napisao. Zasto ides kroz sve brojeve, kad se traze samo prosti, recimo za i = 100 (npr), nikada neces dobiti ono sto ti treba jer nije prost broj.
v
vasja
Hvala na pomoci.
Popravio sam kod i sada pada samo na 25 test primeru.
Ako mogu da dobijem taj test primer?
b
boba5551
Nema potrebe da ti dajem test primer jer ti je alg spor. Znaci, umesto da radis recimo
if(primes[i]%M==D &amp;&amp; primes[j]%M==D &amp;&amp; primes[k]%M==D) 

ti lepo napravi nov vector u koji ces staviti samo one proste brojeve koji ti odgovaraju i dovoljno ces ubrzati da ti prodje.

Btw, onda ti nece trebati da provera.