Cod sursa(job #5548)

Utilizator m123pop manu m123 Data 13 ianuarie 2007 07:36:15
Problema Factorial Scor 15
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.85 kb
program factorial {arhiva arena};
var f,g:text;
    p,n,i:longint;
begin
assign(f,'fact.in');reset(f);
assign(g,'fact.out');rewrite(g);
readln(f,p);
case p of
0:writeln(g,1);
1:writeln(g,5);
2:writeln(g,10);
3:writeln(g,15);
4:writeln(g,20);
5:writeln(g,-1);
6:writeln(g,25);
7..30:begin i:=6;while i+i div 5 < p do inc(i);
       if i+i div 5 =p then write(g,i*5)
                       else write(g,-1);
       end;
31:write(g,125);
32..155:begin i:=26;
         while i+i div 5+i div 25 < p do
                             inc(i);
       if i+i div 5+i div 25 =p then write(g,i*5)
                       else write(g,-1);
       end;
156:write(g,625);
157..780:begin i:=126;
         while i+i div 5+i div 25+i div 125 < p do
                             inc(i);
       if i+i div 5+i div 25+ i div 125 =p then write(g,i*5)
                       else write(g,-1);
       end;
781:write(g,3125);
782..3905:begin i:=626;
         while i+i div 5+i div 25+i div 125+i div 625 < p do
                             inc(i);
       if i+i div 5+i div 25+ i div 125+i div 625 =p then write(g,i*5)
                       else write(g,-1);
       end;
3906:write(g,15625);
3907..19530:begin i:=3126;
         while i+i div 5+i div 25+i div 125+i div 625+i div 3125 < p do
                             inc(i);
       if i+i div 5+i div 25+ i div 125+i div 625+i div 3125 =p then write(g,i*5)
                       else write(g,-1);
       end;
19531:write(g,78125);

end;
if ( p>=19532)and ( p<=97655) then begin i:=15626;
         while i+i div 5+i div 25+i div 125+i div 625+i div 3125+i div 15625 < p do
                             inc(i);
       if i+i div 5+i div 25+ i div 125+i div 625+i div 3125+i div 15625 =p then write(g,i*5)
                       else write(g,-1);
       end;
if p=97656 then write(g,390625);
close(f);close(g);
end.