Cod sursa(job #184696)

Utilizator ArchangelKlein Andrei Archangel Data 24 aprilie 2008 08:41:20
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.06 kb
const cinci : array[1..13] of longint =
(5,
25,
125,
625,
3125,
15625,
78125,
390625,
1953125,
9765625,
48828125,
244140625,
1220703125);

var
 fi,fo: text;
 p,x: longint;

function p5(x: longint): longint;
var i,sum: longint;
begin
   sum := 0;
   for i := 1 to 13 do
    sum := sum + (x div cinci[i]);
   p5 := sum;
end;

function searchmybin(st,dr: longint): longint;
var m,aux: longint;
begin
   if st > dr
    then searchmybin := -2
    else
     begin
        m := (st+dr) div 2;
        aux := p5(m);
        if aux = p
         then searchmybin := m
         else if p > aux then searchmybin := searchmybin(m+1,dr)
                         else searchmybin := searchmybin(st,m-1);
     end;
end;

begin
   assign(fi,'fact.in');
   assign(fo,'fact.out');
   reset(fi);
   rewrite(fo);
   read(fi,p);
   if p = 0 then begin writeln(fo,1); close(fo); halt end;
   x := searchmybin(1,trunc(2e9));
   if x > 0 then
    while p5(x) = p do
     dec(x);
   writeln(fo,x+1);
   writeln(p5(10));
   close(fi);
   close(fo);
end.