Даны целые а1, . найти наибольшее значение,содержащееся в последовательности чисел а1, после выбрасывания из неё: а)одного из членов со значением max(a1,) с объяснением )
Количество различных салатов R, которые можно приготовить, имея n продуктов и беря для приготовления k из них (k=2,3,... n-1), в математике определяется, как число размещений из n по k и определяется по следующей формуле: Формула красивая, короткая, но неудобная для вычисления. В самом деле, надо найти три факториала, каждый из которых может оказаться достаточно большим числом. Но можно сделать небольшое преобразование и упростить вычисление.
Но это было вычисление R только для конкретного k при заданном n. Нам же нужно найти сумму R для всех k от 2 до n. И да, для k=n формула не предназначена, но зато мы и так понимаем, что для такого случая R=1.
Задача свелась к нахождению обычной суммы
// 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.
Const nn=100; { максимальное значение n } var i,n,k,s:integer; a:array[1..nn] of integer; begin Write('Укажите натуральное число n: '); Read(n); Randomize; k:=0; s:=0; Writeln('Сформированная последовательность'); for i:=1 to n do begin a[i]:=Random(99)+1; { случайное число на интервале [1;99] } Write(a[i]:3); if (a[i] mod 5=0) and (a[i] mod 7 <>0) then begin Inc(k); s:=s+a[i] end; end; Writeln; Writeln('Количество чисел, кратных пяти: ',k); Writeln('их сумма равна ',s) end.
Формула красивая, короткая, но неудобная для вычисления. В самом деле, надо найти три факториала, каждый из которых может оказаться достаточно большим числом. Но можно сделать небольшое преобразование и упростить вычисление.
Но это было вычисление R только для конкретного k при заданном n.
Нам же нужно найти сумму R для всех k от 2 до n. И да, для k=n формула не предназначена, но зато мы и так понимаем, что для такого случая R=1.
Задача свелась к нахождению обычной суммы
// 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