Cod sursa(job #95455)

Utilizator juniorOvidiu Rosca junior Data 28 octombrie 2007 20:59:09
Problema Factorial Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.88 kb
var
	fi, fo : text;
  p : longint;
  p5, n5, s, d, m : int64;
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 := 5000000000; // cautare binara
        repeat
          n5 := 0; p5 := 5; m := (s+d) div 2;
        	while p5 <= m do
          	begin
              n5 := n5+m div p5;
          		p5 := p5*5;
            end;
          if n5 < p then
          	s := m+1
          else
          	d := m-1;
        until n5 = p;
        while m mod 5 <> 0 do
        	dec(m);
        write(fo,m);
      end;
  close(fi); close(fo);
end.

1320(5) = 125 + 75 + 10 = 210
            1 +  5 + 25

                        5
    5    5    5    5    5
55555555555555555555555555 32 de factori de 5

    5
555555555