Cod sursa(job #223228)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 27 noiembrie 2008 19:17:24
Problema Sandokan Scor 50
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.82 kb
const x=2000003;

var f,g:text;
    n,k,t:longint;

function cmmdc(a,b:longint):longint;
begin
  k:=a mod b;
  while (k>0)do
    begin
      a:=b;
      b:=k;
      k:=a mod b;
    end;
  cmmdc:=b;
end;


function comb(n,k:longint):longint;
var v:array[0..5010]of longint;
    i,j,p:longint;
begin
  if (k>n-k)then k:=n-k;
  for i:=1 to n do v[i]:=i;
  for i:=2 to k do
  begin
    for j:=n-k+1 to n do
      begin
        p:=cmmdc(v[i],v[j]);
        v[i]:=v[i] div p;
        v[j]:=v[j] div p;
        if (v[i]=1)then break;
      end;
  end;
  p:=1;
  for i:=n-k+1 to n do p:=(p*v[i])mod x;
  comb:=p;
end;



begin
assign(f,'sandokan.in');
assign(g,'sandokan.out');
reset(f);
rewrite(g);
read(f,n,k);
t:=n mod (k-1);
if (t=0)then t:=k-1;
write(g,comb(n-1,t-1));
close(f);
close(g);
end.