Задание 12 Параграф 9 ГДЗ Босова 11 класс (Информатика)
Число сочетаний без повторений из n по k – это число способов, сколькими можно из различных n элементов выбрать k штук без учета порядка.
Подпрограмму-функцию можно сделать для вычисления факториала. Ее можно сделать двумя способами: с использованием рекурсии и без рекурсии.
С рекурсией
function F(m: integer): integer;
begin
if m = 0 then F := 1
else
F := F(m — 1) * m;
end;
var
n, k: integer;
C:real;
begin
writeln(‘Введите n и k через пробел, n > k ‘);
readln(n, k);
C := F(n) / (F(n — k) * F(k));
writeln(‘C=’, C)
end.
Программа: Z_9_12_R.pas
(ссылка ниже)
Без рекурсии
function F(m: integer): integer;
var
i,fa: integer;
begin
fa:=1;
for i := 1 to m do
fa := fa * i;
F:=fa
end;
var
n, k: integer;
C: real;
begin
writeln(‘Введите n и k через пробел, n > k ‘);
readln(n, k);
C := F(n) / (F(n — k) * F(k));
writeln(‘C=’, C)
end.
Программа: Z_9_12.pas
(ссылка ниже)
Число сочетаний без повторений из $$n$$ по $$k$$ вычисляется по формуле:
$$C_n^k=\frac{n!}{k!(n-k)!}$$
Удобно вынести вычисление факториала в подпрограмму-функцию. Тогда основная программа будет только считывать $$n$$ и $$k$$ и подставлять их в формулу.
Вариант с рекурсией:
function F(m: integer): integer;
begin
if m = 0 then F := 1
else F := F(m — 1) * m;
end;var
n, k: integer;
C: real;
begin
writeln(‘Введите n и k через пробел, n > k ‘);
readln(n, k);
C := F(n) / (F(n — k) * F(k));
writeln(‘C=’, C);
end.
Вариант без рекурсии:
function F(m: integer): integer;
var
i, fa: integer;
begin
fa := 1;
for i := 1 to m do
fa := fa * i;
F := fa;
end;var
n, k: integer;
C: real;
begin
writeln(‘Введите n и k через пробел, n > k ‘);
readln(n, k);
C := F(n) / (F(n — k) * F(k));
writeln(‘C=’, C);
end.
Ответ
Программа для вычисления числа сочетаний без повторений из $$n$$ по $$k$$ составляется с использованием подпрограммы-функции для нахождения факториала.