• Как-то раз, придя домой со школы, Света обнаружила записку от мамы, в которой она просила сделать салат. Света знала, что салат – это смесь двух или более ингредиентов, поэтому ей не составило труда выполнить мамину просьбу.Но Света хочет стать математиком, поэтому, для тренировки, решила посчитать, сколько различных салатов она сможет сделать из имеющихся продуктов (майонез, огурцы, помидоры). После небольших расчетов она получила ответ: 4.Зная, что вы любите интересные задачки, и хотите стать программистами, Света попросила вас написать программу, которая определяет количество различных салатов для произвольного числа ингредиентов.

Ответы 1

  • Количество различных салатов R, которые можно приготовить, имея n продуктов и беря для приготовления k из них (k=2,3,... n-1), в математике определяется, как число размещений из n по k и определяется по следующей формуле:\displaystyle C_n^k= \frac{n!}{k!(n-k)!} Формула красивая, короткая, но неудобная для вычисления. В самом деле, надо найти три факториала, каждый из которых может оказаться достаточно большим числом. Но можно сделать небольшое преобразование и упростить вычисление.\displaystyle R=C_n^k= \frac{n!}{k!(n-k)!} = \frac{k!(k+1)(k+2)...(n-1)n}{k!(n-k)!}= \\ \frac{(k+1)(k+2)...(n-1)n}{1\cdot2\cdot...\cdot(n-k)}=\prod_{i=1}^{n-k} \frac{k+i}{i} Но это было вычисление R только для конкретного k при заданном n.Нам же нужно найти сумму R для всех k от 2 до n. И да, для k=n формула не предназначена, но зато мы и так понимаем, что для такого случая R=1.Задача свелась к нахождению обычной суммы\displaystyle S=C_2^n+C_3^n+...+C_{n-1}^n+1=1+\sum_{i=2}^{n-1}C_i^n// PascalABC.NET 3.2, сборка 1370 от 24.12.2016// Внимание! Если программа не работает, обновите версию!function C(n,k:integer):integer;begin  if n=k then Result:=1  else begin    var p:=1.0;    for var i:=1 to n-k do p:=p*(k+i)/i;    Result:=Round(p);    end;end;begin  var n:=ReadInteger('Кол-во продуктов: ');  var s:=1;  for var i:=2 to n-1 do s:=s+C(n,i);  Writeln('Кол-во салатов: ',s)end.Примеры:Кол-во продуктов:  3Кол-во салатов: 4Кол-во продуктов:  5Кол-во салатов: 26Кол-во продуктов:  10Кол-во салатов: 1013
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years