CWAY - Đếm số đường đi trên đồ thị đầy đủ
Tác giả: RR
Ngôn ngữ: Pascal
const
base=1000;
type
big=array[0..1000] of longint;
var
f:array[2..1000] of big;
i,n:longint;
procedure nhan(a:big; k:longint; var b:big);
var
i,nho:longint;
begin
nho:=0; b[0]:=a[0];
for i:=1 to a[0] do
begin
b[i]:=a[i]*k+nho;
nho:=b[i] div base;
b[i]:=b[i] mod base;
end;
while nho>0 do
begin
inc(b[0]);
b[b[0]]:=nho mod base;
nho:=nho div base;
end;
end;
procedure cong1(var a:big);
var
i,nho:longint;
begin
nho:=1;
for i:=1 to a[0] do
begin
a[i]:=a[i]+nho;
if a[i]<base then nho:=0
else begin nho:=1; dec(a[i],base); end;
end;
if nho>0 then
begin
inc(a[0]);
a[a[0]]:=nho;
end;
end;
procedure print(var a:big);
var
i:longint;
begin
write(a[a[0]]);
for i:=a[0]-1 downto 1 do
if a[i]>=100 then write(a[i])
else if a[i]>=10 then write('0',a[i])
else write('00',a[i]);
end;
begin
f[2][0]:=1; f[2][1]:=1;
for i:=3 to 1000 do
begin
nhan(f[i-1],i-2,f[i]);
cong1(f[i]);
end;
read(n);
print(f[n]);
end.