Cod sursa(job #20492)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 21 februarie 2007 17:01:49
Problema Factorial Scor 85
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.75 kb
const b:array[1..12] of int64=(5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625);
      a:array[1..12] of int64=(1,6,31,156,781,3906,19531,97656,488281,2441406,12207031,244140625);
var f,g:text;
    i,x:longint;
    p,n:int64;
    ok,ok2:boolean;
begin
 assign(f,'fact.in'); reset(f);
 assign(g,'fact.out'); rewrite(g);
 read(f,p);
 if p=0 then begin
  ok2:=false;
  writeln(g,'1');
 end
 else
  ok2:=true;
 n:=0;
 ok:=true;
 while (p<>0) and (ok) do
  for i:=1 to 12 do
   if (a[i]<=p) and (a[i+1]>p) then begin
    x:=p div a[i];
    if x>4 then
     ok:=false;
    n:=n+x*b[i];
    p:=p-x*a[i];
    break;
   end;
 if ok then
  writeln(g,n)
 else
  if ok2 then
   writeln(g,'-1');
 close(g); close(f);
end.