Cod sursa(job #250323)

Utilizator dyzzy_dyzzyStanciulescu Daniel dyzzy_dyzzy Data 30 ianuarie 2009 17:36:19
Problema Factorial Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.91 kb
const fin='fact.in';
      fout='fact.out';
var p,pli,plo:longint;
    n,li,lo:longint;
    f,g:text;


procedure binar(li,lo,lint:longint);
var mij:longint;
begin
if li>=lo then begin
   if p=(li-lint) div 5+pli then
        n:=li
   else
       n:=-1;
   exit;

   end
else begin
  if (li+lo) mod 2=0 then
     mij:=(li+lo) div 2
  else
    mij:=(li+lo) div 2 + 3;
  if p=(mij-lint) div 5+pli then begin
    n:=mij;
    exit;
  end;
  if p<(mij-lint) div 5+pli then
    binar(li,mij,lint)
  else binar(mij,lo,lint);
end;
end;

begin
assign(f,fin);
assign(g,fout);
reset(f);
readln(f,p);
close(f);

if p=0 then
  n:=1
else begin
  li:=5;
  lo:=25;
  pli:=1;
  plo:=6;
  while plo<=p do
  begin
     li:=lo;
     lo:=lo*5;
     pli:=plo;
     plo:=plo+lo div 5;
  end;
  lo:=lo-5;
  plo:=(lo-li) div 5+pli;
  binar(li,lo,li);
end;
rewrite(g);
writeln(g,n);
close(g);
end.