← Back to topics
Topic

[delioci]

basic
sta da radim zbog prekoracenog vremenskog ogranicenja:
program delioci;
var
n,i,j,b,Bm,Bi:longint;
begin
read(n);
for i:=n downto 1 do
begin
b:=0;
for j:=1 to i do
if (i mod j=0) then b:=b+1;
if (b>=Bm) then
begin
Bm:=b;
Bi:=i;
end;
end;
writeln(Bi);
writeln(Bm);
end.

m@re_m@re
Koliko se secam u ovom zadatku je n:longint odnosno ne mozes da imas pelju for i:=n to 1 kada je n=10^9
boneli
Ovde valja primetiti da svaki sledeci broj koji ima najvise delilaca ima jedino proste faktore medju prvih desetak prostih brojeva, pa mozes da ih trazis u tom skupu...
vasja
Kako se resava ovaj zadatak a da ne prekoraci vremenski limiit?
Kako da nadjem koliko jedan broj ime delioca?
renovator
Da bi nasao koliko jedan broj ima delioca prvo ga rastavis na proste cinioce.
Dakle, ako je ovo ta faktorizacija :

p1^s1 + p2^s2 + ... + pn^sn

onda je broj delioca tog broja jednak

(s1 + 1) * (s2 + 1) * ... * (sn + 1)

vasja
pa dobro to je bio lagani deo . :D To sam uradio i sam prolazi samo na prva 4 primera a na ostalim pada zbog vremena . Hint?
renovator
Dobro, onda vidis da je bolje da imas pa^(sa + 1) * ... * pr^sr nego pa^sa * ... * pr^(sr + 1) (a < r).
vasja
Ne razumem bas ovo!?
Mozes li mi objasniti primerom?
renovator
Hocu reci da ce steni prostih cinioca biti u nerastucem redosledu.
Jer, ako imas recimo 2^3 + 3^5, bolje ti je da imas 2^5 + 3^3 posto je broj manji
tako je veca verovatnoca da je manji od granice, a broj delioca je isti.
jerko
jel mi mozete poslat 4. test primjer?
hvala