Cod sursa(job #527405)
| Utilizator | Data | 31 ianuarie 2011 13:58:31 | |
|---|---|---|---|
| Problema | Factorial | Scor | 95 |
| Compilator | fpc | Status | done |
| Runda | Arhiva de probleme | Marime | 0.48 kb |
var a:array[1..20] of int64;
p,n:int64;
i:integer;
b:boolean;
f:text;
begin
assign(f,'fact.in');
reset(f);
read(f,p);
close(f);
b:=true;
if p=0 then n:=1 else
begin
a[1]:=6;
for i:=2 to 20 do
a[i]:=a[i-1]*5+1;
for i:=20 downto 1 do
if p div a[i]= a[i]-1 then begin b:=false; break; end else p:=p-(p div a[i]);
if b then n:=p*5;
end;
assign(f,'fact.out');
rewrite(f);
if b then write(f,n) else write(f,-1);
close(f);
end.
