Cod sursa(job #305636)

Utilizator danalex97Dan H Alexandru danalex97 Data 17 aprilie 2009 23:06:41
Problema Factorial Scor 60
Compilator fpc Status done
Runda Arhiva de probleme Marime 2.01 kb
procedure lucru(var c:longint;n:longint);
begin
while n mod 5=0 do
  begin
    n:=n div 5;
    inc(c);
  end;
end;

var p,n,c,k:longint;
    f,g:text;

begin
assign(f,'fact.in');
reset(f);
assign(g,'fact.out');
rewrite(g);
read(f,p);
if (p>0) then
begin
{}
if p<10000 then
begin
n:=0;
c:=0;
while c<p do
  begin
    inc(n,5);
    lucru(c,n);
  end;
if c=p then write(g,n)
       else write(g,'-1');
end;
{}
if (p<100000)and(p>=10000) then
begin
n:=40010;
c:=10000;
while c<p do
  begin
    inc(n,5);
    lucru(c,n);
  end;
if c=p then write(g,n)
       else write(g,'-1');
end;
{}
if (p<1000000)and(p>=100000) then
begin
n:=400005;
c:=100000;
while c<p do
  begin
    inc(n,5);
    lucru(c,n);
  end;
if c=p then write(g,n)
       else write(g,'-1');
end;
{}
if (p<10000000)and(p>=5000000) then
begin
n:=20000005;
c:=5000000;
while c<p do
  begin
    inc(n,5);
    lucru(c,n);
  end;
if c=p then write(g,n)
       else write(g,'-1');
end;
{}
if (p<5000000)and(p>=1000000) then
begin
n:=4000005;
c:=1000000;
while c<p do
  begin
    inc(n,5);
    lucru(c,n);
  end;
if c=p then write(g,n)
       else write(g,'-1');
end;
{ ~limit~ }
if (p<=25000000)and(p>=10000000) then
begin
n:=40000010;
c:=10000000;
while c<p do
  begin
    inc(n,5);
    lucru(c,n);
  end;
if c=p then write(g,n)
       else write(g,'-1');
end;
{}
if (p>=75000000)and(p>=50000000) then
begin
n:=200000010;
c:=50000000;
while c<p do
  begin
    inc(n,5);
    lucru(c,n);
  end;
if c=p then write(g,n)
       else write(g,'-1');
end;
{}
if (p<50000000)and(p>=25000000) then
begin
n:=100000005;
c:=25000000;
while c<p do
  begin
    inc(n,5);
    lucru(c,n);
  end;
if c=p then write(g,n)
       else write(g,'-1');
end;
{}
if (p>75000000) then
begin
n:=300000010;
c:=75000000;
while c<p do
  begin
    inc(n,5);
    lucru(c,n);
  end;
if c=p then write(g,n)
       else write(g,'-1');
end;
{}
end
else
if p=0 then write(g,'1');
close(f);
close(g);
end.