На основе подпрограммы факториала вычислить число сочетаний Cnm из N элементов по M, использовав формулу: Сnm = N!/((N-M)!*M!). Реализовать 2 варианта решения - c процедурой и с функцией.
На голосовании 6 лет назад
Вариант 1(на основе функции)
Program zd;
var N,M:integer;
function Fact(x:integer):longint;
begin
if x=1 then Fact:=1
else fact:=x*fact(x-1);
end;
begin
readln(N,M);
write('N!/((N-M)!*M!)=',Fact(N)div(Fact(N-M)*Fact(M) ));
end.
2
Функция Cnm
program Cnm;
var n,m:integer;
function factorial(n: Byte): word;
Begin
if n=0 then factorial:=1
else factorial:=n*factorial(n-1);
End;
Begin
read(n,m);
if n>m then writeln(factorial(n) div factorial(n-m)*factorial(m))
else write('ERROR. n must be > than m');
End.
можете сделать лучше