Вот условие: Генри Шейкер работает барменом в любимом баре Вито Маретти. Каждый вечер он радует гангстера новым коктейлем: водка с мартини, джин с апельсиновым соком, кефир с минералкой… За каждый новый коктейль Вито щедро расплачивается, а за повторение можно и пулю в лоб получить. Генри хочет знать, через сколько дней ему нужно будет покинуть город. Для этого посчитайте, сколько различных коктейлей Генри сможет сделать из N компонентов. Коктейлем считается смесь из двух и более напитков. Не разрешается использовать один напиток более одного раза в одном коктейле. Водка с мартини и мартини с водкой считаются разными коктейлями.
Вот мой код:
Код:
program combinatorics;
{$APPTYPE CONSOLE}
uses
SysUtils;
function factorial(N:integer):extended;
var
i:integer;
W:extended;
begin
W:=1;
for i:=1 to N do
begin
W:=W*i;
end;
factorial:=W;
end;
function TNOP(N,k:integer):extended; // The number of placements
var
W:extended;
begin
W:=(factorial(N))/(factorial(n-k));
TNOP:=W;
end;
var
k,N:integer;
W:extended;
begin
readln(N);
W:=0;
for k:=2 to N do
begin
W:=W+TNOP(N,k);
end;
writeln(W);
readln;
end.
Как видите, Использовал формулу n!/(n-k)! , пробегая по всем k от 2 до n. "Проверятор" выдает ошибку результата.. подскажите, пожалуйста