Cod sursa(job #62558)

Utilizator spike05Dan Radu spike05 Data 23 mai 2007 09:13:29
Problema Factorial Scor 85
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.02 kb
{$mode objfpc}
{$coperators on}

type
  integer=dword; 

function min(a,b:integer):integer;inline;
begin
  if(a<b)then
    exit(a);
  Result:=b;
end;

function test(n:integer):integer;inline; 
var
  pow2:integer=0;
  pow5:integer=0;
  tmp:integer;
begin
  tmp:=n;
  while tmp>0 do
  begin
    tmp:=tmp div 2;
    pow2+=tmp;
  end;
  tmp:=n;
  while tmp>0 do
  begin
    tmp:=tmp div 5;
    pow5+=tmp;
  end;
  Result:=min(pow2,pow5);
end;

var
  n:integer;

function cb(min,max:integer):integer;
var
  x,p:integer;
begin
  if min<=max then
  begin 
    p:=(min+max) div 2;
    x:=test(p);
    if x<n then
      Result:=cb(p,max)
    else if x>n then
      Result:=cb(min,p)
    else
    begin
      dec(p);
      while (p>0)and(test(p)=n) do dec(p);
      Result:=p+1;
    end;
  end; 
end;

begin
  assign(input,'fact.in');
  assign(output,'fact.out');
  reset(input);
  rewrite(output);

  readln(n);
  writeln(cb(1,400000015));

  close(input); 
  close(output);
end.