Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal»
33
15.
end.
Задача № 28. Вычислить факториал
Формулировка. Дано натуральное число n (которое также может быть равно нулю). Вычис-
лить n!
Примечание: n! (факториал числа n, читается «эн факториал») – произведение всех натураль-
ных чисел до n включительно.
Решение. Задача очень просто решается через цикл for по всем i от 1 до n, в теле которого мы
на каждом шаге домножаем переменную-результат fact (которой до входа в цикл присвоено значе-
ние 1) на i. При этом сохраняется и правило 0! = 1, так как при вводе нуля программа не войдет в
цикл и на выход пойдет неизмененное в переменной fact число 1.
Код:
1.
program Factorial;
2.
3.
var
4.
i, n: byte;
5.
fact: integer;
6.
7.
begin
8.
readln(n);
9.
fact := 1;
10.
for i := 1 to n do begin
11.
fact := fact * i
12.
end;
13.
writeln(fact)
14.
end.
Примечание: для накопления результата мы использовали переменную fact типа integer. Как
уже говорилось, этот тип охватывает диапазон целых чисел от –2147483648 до 2147483647 (Borland
Delphi 7
и PascalABC). Данная переменная позволит сформировать результаты вплоть до 12! (=
479001600
) включительно.
Задача № 29. Вычислить число сочетаний из n по k
Формулировка. Даны натуральные числа n и k (k не превышает n). Вычислить число сочета-
ний из n по k.
Примечание: в комбинаторике сочетанием из n по k называется набор k элементов, выбранных
из данных n элементов; при этом наборы, отличающиеся только порядком следования элементов,
считаются одинаковыми. Обозначение числа сочетаний из n по k элементов:
k
n
C .
При этом счита-
ется, что
1
n
n
C
= ,
0
1
n
C
=
и
0
0
1
C
=
для любого натурального n.
Например, найдем все 2-элементные сочетания 3-элементного множества {1, 2, 3}. Таковыми
являются {1, 2}, {1, 3} и {2, 3}. То есть, таковых сочетаний 3. При этом, например, {1, 2} и {2, 1} –
одинаковые сочетания, так как они отличаются только порядком следования элементов.
Решение. Из комбинаторики известна формула:
(
)
(
)(
) (
)
1
2 ...
1
!
!
!
!
k
n
C
n n
n
n k
n
k n k
k
−
− ⋅ ⋅ − +
=
=
−
Do'stlaringiz bilan baham: |