М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
gardenberg17
gardenberg17
14.03.2023 02:39 •  Информатика

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

👇
Ответ:
kajaiuw
kajaiuw
14.03.2023
Количество различных салатов 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
4,5(36 оценок)
Открыть все ответы
Ответ:
ruzhejnickovan
ruzhejnickovan
14.03.2023

from random import randint

# заполняем массив случайными числами

arr = [randint(-10,10) for i in range(20)]

print(arr)

# задание 1

print(f'Сумма элементов первой половины массива {arr[0:10]} равна {sum(arr[0:10])}')

print(f'Сумма элементов второй половины массива {arr[10:20]} равна {sum(arr[10:20])}')

# задание 2

k=1

for i in arr:

   if i!=0:

       k*=i

print(f'Произведение ненулевых элементов массива равно {k}')

# задание 3

k=0

for i in arr:

   if i<0:

       k+=1

print(f'Количество отрицательных элементов массива равно {k}')

4,4(86 оценок)
Ответ:
studentsuka
studentsuka
14.03.2023

Задание 3 (двухмерный массив)

var

a:array [1..10,1..7] of integer;

k,i,j:integer;

begin

randomize;

for i:=1 to 10 do begin

for j:=1 to 7 do begin

a[i,j]:=random(9)+1;

write (a[i,j]:4);

if a[i,j] mod 2 <> 0 then k:=k+1;

end;

writeln;

end;

writeln ('Количество нечетных элементов массива = ',k);

readln;

end.

Задание 2 (двухмерный массив)

uses crt;
const
a:array [1..5,1..5] of integer = ((100,101,102,103,104),
                                                     (200,201,202,203,204),
                                                     (300,301,302,303,304),
                                                     (400,401,402,403,403),
                                                     (500,501,502,503,504));
var
i,j:integer;
begin
clrscr;
for i:=1 to 5 do begin
for j:=1 to 5 do
if j mod 2 = 0 then begin
textcolor (12);
write (a[i,j]:4);
textcolor (7);
end else begin
textcolor (9);
write (a[i,j]:4);
textcolor (7);
end;
writeln;
end;
readln;
end.

Задание 1 (одномерный массив) 

uses crt;
var
a:array [1..7] of integer;
i,sum:integer;
begin
clrscr;
for i:=1 to 7 do begin
write ('A[',i,'] = ');readln(a[i]);
if a[i]>0 then sum:=sum+a[i];
end;
for i:=1 to 7 do
if a[i]>0 then begin
textcolor (red);
write (a[i]:4);
end else begin
textcolor (blue);
write (a[i]:4);
end;
writeln;
textcolor (darkgray);
writeln ('Сумма положительных элементов = ',sum);
readln;
end.

Задание 4 (одномерный массив)

uses crt;
var
a:array [1..12] of integer;
i,buf,min,max:integer;
begin
clrscr;
randomize;
a[1]:=random(14)+1;
min:=1;
max:=2;
writeln ('Исходный массив: ');
write (a[1]:4);
for i:=2 to 12 do begin
a[i]:=random(14)+1;
write (a[i]:4);
if a[i]>a[max] then max:=i else
if a[i]<a[min] then min:=i;
end;
writeln;
{смена 1-ого и последнего эл}
buf:=a[1];
a[1]:=a[12];
a[12]:=buf;
{смена 2-ого и мин эл}
buf:=a[2];
a[2]:=a[min];
a[min]:=buf;
{смена 1-ого и макс эл}
buf:=a[1];
a[1]:=a[max];
a[max]:=buf;
writeln ('Результирующий массив:: ');
for i:=1 to 12 do write (a[i]:4);
writeln;
readln;
end.

Задание 3 (одномерный массив)

var
a,b:array [1..10] of integer;
i,j:integer;
s1,s2:real;
begin
randomize;
s1:=0;
s2:=0;
writeln;
for i:=1 to 10 do begin
a[i]:=random(11)-5;
b[i]:=random(19)-9;
write (a[i]:4);
s1:=s1+a[i];
s2:=s2+b[i];
end;
writeln;
for i:=1 to 10 do write (b[i]:4);
writeln;
s1:=s1/10;
s2:=s2/10;
if s1>s2 then writeln ('S1 > S2') else
if s1<s2 then write ('S1 < S2') else writeln ('S1 = S2');
readln;
end.

4,5(100 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ