2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Задача на комбинаторику
Сообщение28.12.2013, 12:48 


26/10/13
42
Вот условие: Генри Шейкер работает барменом в любимом баре Вито Маретти. Каждый вечер он радует гангстера новым коктейлем: водка с мартини, джин с апельсиновым соком, кефир с минералкой… За каждый новый коктейль Вито щедро расплачивается, а за повторение можно и пулю в лоб получить. Генри хочет знать, через сколько дней ему нужно будет покинуть город. Для этого посчитайте, сколько различных коктейлей Генри сможет сделать из 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. "Проверятор" выдает ошибку результата.. подскажите, пожалуйста

 Профиль  
                  
 
 Re: Задача на комбинаторику
Сообщение28.12.2013, 13:25 
Аватара пользователя


03/10/13
449
LexiBender в сообщении #807111 писал(а):
Использовал формулу n!/(n-k)! , пробегая по всем k от 2 до n

Это неверно.

 Профиль  
                  
 
 Re: Задача на комбинаторику
Сообщение28.12.2013, 13:58 


26/10/13
42
Urnwestek в сообщении #807127 писал(а):
LexiBender в сообщении #807111 писал(а):
Использовал формулу n!/(n-k)! , пробегая по всем k от 2 до n

Это неверно.

Я уже понял ))) Вот и спрашиваю, какую надо применять?)

 Профиль  
                  
 
 Re: Задача на комбинаторику
Сообщение28.12.2013, 14:30 
Аватара пользователя


03/10/13
449
Это всё равно, что (все коктейли) - (коктейли только из одного напитка) - (коктейли только из нуля напитков). Попробуйте вывести в этой формуле все слагаемые самостоятельно.

 Профиль  
                  
 
 Re: Задача на комбинаторику
Сообщение28.12.2013, 14:31 
Аватара пользователя


10/11/12
121
Бобруйск
LexiBender, если вы указываете условие задачи, то указывайте его полностью, со всеми условиями. Я имею ввиду вот это:
число N ($1 \leqslant N \leqslant 21$) — количество имеющихся у Генри напитков.
Думаю ваша формула верна, но, как вы думаете, что становится с extended при попытке засунуть в него $21!$. Почему вы решили использовать здесь вещественный тип переменной?

Результат
Выведите единственное целое число, равное искомому количеству коктейлей.

Что выведет вот эта ваша строка
writeln(W);
при больших значениях W?

 Профиль  
                  
 
 Re: Задача на комбинаторику
Сообщение28.12.2013, 14:34 
Заслуженный участник
Аватара пользователя


13/08/08
14495
А почему неправильно? По условию коктейлем считается набор из нескольких ингридиентов, в котором порядок имеет значение.
Например, для $n=3$ все возможные и различные коктейли это:
$123,132,213,231,312,121,12,21,13,31,23,32$
Их $6+6=12$ штук, что считается именно суммированием Ваших формул.
Возможно, ошибка именно в программе. Что-то не так суммируется или считается.
Не говорю уже о том, что Вы делаете ужасное число лишних действий. Считать Вашу формулу через два факториала очень неэффективно.

 Профиль  
                  
 
 Re: Задача на комбинаторику
Сообщение28.12.2013, 14:40 
Аватара пользователя


03/10/13
449
Да, снова слажал, про порядок не углядел и про себя додумал.
Надо чутка передохнуть от форума. (:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group