CWAY - Đếm số đường đi trên đồ thị đầy đủ

Tác giả: ll931110

Ngôn ngữ: Pascal

program CWAY;
const
  maxn = 1000;
  maxd = 550;
  base = 100000;
type
  arr = array[1..maxd] of longint;
var
  F: array[0..maxn] of arr;
  n: longint;

function adjust(d: arr; x: longint): arr;
var
  tmp: arr;
  i: longint;
begin
  for i := 1 to maxd do tmp[i] := d[i] * x;
  inc(tmp[1]);

  for i := 1 to maxd - 1 do if tmp[i] >= base then
    begin
      tmp[i + 1] := tmp[i + 1] + tmp[i] div base;
      tmp[i] := tmp[i] mod base;
    end;

  adjust := tmp;
end;

procedure precom;
var
  i: longint;
begin
  fillchar(F, sizeof(F), 0);
  F[0,1] := 1;
  for i := 1 to maxn - 2 do F[i] := adjust(F[i - 1],i);
end;

procedure printresult;
var
  i,j,k: longint;
  s: string;
begin
  readln(n);
  n := n - 2;

  i := maxd;
  while F[n,i] = 0 do dec(i);

  write(F[n,i]);
  for j := i - 1 downto 1 do
    begin
      str(F[n,j],s);
      for k := 1 to 5 - length(s) do write(0);
      write(s);
    end;
end;

begin
  precom;
  printresult;
end.

Download