Cod sursa(job #95495)

Utilizator juniorOvidiu Rosca junior Data 28 octombrie 2007 23:41:51
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.02 kb
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
          	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.
        	write (fo,-1);
      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