Số Catalan được xác định bởi công thức :
Sau khi rút gọn ta được:
Để tính nó thì em dùng ct sau
program gin;
uses crt;
type bignum = String;
function munlti1(a : bignum; b : Longint) : bignum; //hàm nhân số nguyên lớn cho số nhỏ
var
du, s : Longint;
i : Integer;
c, tmp : bignum;
begin
c := '';
du := 0;
for i := Length(a) downto 1 do
begin
s := b*(ord(a[i])- 48) + du;
du := s div 10;
c := chr(s mod 10 + 48) + c;
end;
if du > 0 then str(du, tmp) else tmp := '';
exit(tmp + c);
end;
function bigdiv1(a : bignum; b : longint) : bignum; //hàm chia số nguyên lón cho số nhỏ
var
hold, s : longint;
i : Integer;
c : bignum;
begin
hold := 0;
c := '';
for i := 1 to Length(a) do
begin
hold := hold * 10 + ord(a[i]) -48;
s := hold div b;
hold := hold mod b;
c := c + chr(s + 48);
end;
while (Length(c) > 0) and (c[1] = '0') do delete(c, 1, 1);
exit(c);
end;
var
n, i : longint;
s : bignum;
begin
write('Nhap N : ');
readln(n);
s := '1';
for i := n+2 to 2*n do
s := munlti1(s, i);
for i := 1 to n do
s := bigdiv1(s, i);
writeln(s);
end.
Nhưng mà trong tài liệu nói là có thể rút gọn hoàn toàn mẫu số của phân số đó để chỉ sử dụng hàm nhân số nguyên lớn với số nhỏ, vậy làm sao để rút gọn phân số đó ạ???