Код
procedure TForm1.Button1Click(Sender: TObject);
var s,n:integer;
type sm=set of 0..99;
procedure rek(b,c:sm; i:integer);
var x:integer;
begin
for x:=0 to n-1 do
if (x in b)and(((x-i+n)mod n)in c) then
begin
if i<n-1 then rek(b-[x],c-[(x-i+n)mod n],i+1) else s:=s+1;
end;
end;
begin
s:=0;
n:=strtoint(edit1.Text);
rek([0..n-1],[0..n-1],0);
label2.Caption:=inttostr(s);
end;
Для четных n искомое будет всегда равно 0.