COND - Quan hệ

Tác giả: ll931110

Ngôn ngữ: Pascal

{$MODE DELPHI}
program COND;
const
  maxn = 10;
var
  list,a: array[1..maxn] of integer;
  p,res: integer;

function calc(n,k: integer): integer;
var
  t,i: integer;
begin
  t := 1;
  for i := 1 to k do
    t :=  t * (n - i + 1) div i;
  calc := t;
end;

procedure addres;
var
  s,i,t: integer;
begin
  t := 1;
  s := 0;
  i := 1;

  while s < p do
    begin
      s := s + a[i];
      t := t * calc(s,a[i]);
      inc(i);
    end;

  res := res + t;
end;

procedure attempt(i,j: integer);
var
  k: integer;
begin
  for k := 1 to j do
    begin
      a[i] := k;
      if j = k then addres else attempt(i + 1,j - k);
    end;
end;

begin
  for p := 2 to 10 do
    begin
      res := 0;
      attempt(1,p);
      list[p] := res;
    end;

  repeat
    readln(p);
    if p <> -1 then writeln(list[p]);
  until p = -1;
end.

Download