Cod sursa(job #25266)

Utilizator alex_damianDamian Alexandru alex_damian Data 4 martie 2007 11:43:18
Problema Kperm Scor 10
Compilator fpc Status done
Runda preONI 2007, Runda 3, Clasele 11-12 Marime 0.91 kb
var a:array[1..100] of integer;
  sel:array[1..100] of boolean;
  k, kk, n, i: integer; nr:longint;
  f,g:text;

procedure back(k:integer);
var i, s:integer;ok:boolean;
begin
if (k=n+1) then begin
  s:=0;ok:=true;
  for i:=1 to kk do s:=s+a[i];
  if (s mod kk <>0) then ok:=false;
  i:=kk+1;
  while (ok) and (i<=n) do begin
    s:=s+a[i]-a[i-kk];
    inc(i);
    if (s mod kk<>0) then ok:=false;
  end;
  if (ok) then nr:=(nr+1) mod 666013;
end
else begin
  for i:=1 to n do
    if (sel[i] = false) then begin sel[i]:=true; a[k]:=i; back(k+1); sel[i]:=false; end;
end;
end;



begin
assign(f,'kperm.in');reset(f);
assign(g,'kperm.out');rewrite(g);
readln(f,n,kk);
if (kk mod 2 = 0) then writeln(g, 0)
else if (n=kk) then begin
  nr:=1;
  for i:=1 to n do nr:=(nr*i) mod 666013;
  writeln(g,nr);
end
else begin
nr:=0;
back(1);
writeln(g, nr mod 666013);
end;
close(f);
close(g);

end.