Pagini recente » Cod sursa (job #1954980) | Cod sursa (job #1928006) | Cod sursa (job #2219955) | Istoria paginii runda/oni_2017_cl10_ziua2_/clasament | Cod sursa (job #117665)
Cod sursa(job #117665)
var
fi, fo : text;
p : longint;
p5, n5, s, d, m : longint;
begin
assign(fi,'fact.in'); reset(fi);
assign(fo,'fact.out'); rewrite(fo);
read(fi,p);
{ if p < 0 then
write(fo,-1)
else}
if p = 0 then
write(fo,1)
else
begin
s := 1; d := 500000000; // cautare binara
repeat
n5 := 0; p5 := 5; m := (s+d) div 2;
while p5 <= m do {1}
begin
n5 := n5+m div p5;
p5 := p5*5;
end;
if n5 < p then
s := m+1
else
d := m-1;
until (n5 = p) or (s > d);
if n5 = p then
begin
while m mod 5 <> 0 do
dec(m);
write(fo,m);
end
else // Nu exista n. (ex. pentru p = 29, deoarece intervine 125)
write (fo,-1); {2}
end;
close(fi); close(fo);
end.
1320(5) = 125 + 75 + 10 = 210
1 + 5 + 25