1) Допустим, бумагу мы сложим в бак 3. Это будет 83 + 58 = 141. Тогда в бак 2 надо сложить стекло или жесть.
1) а) Допустим, мы в бак 2 сложили стекло. Это будет 52 + 85 = 137. Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170. Всего 141 + 137 + 170 = 448 перемещений.
1) б) Допустим, мы в бак 2 сложили жесть. Это будет 64 + 75 = 139. Тогда в бак 1 кладем стекло. Это будет 98 + 85 = 183. Всего 141 + 139 + 183 = 463 > 448.
2) Допустим, бумагу мы сложили в бак 2. Это опять 83 + 58 = 141. 2) а) Кладем в бак 3 стекло. Это будет 98 + 52 = 150. Тогда в бак 1 кладем жесть. Это будет 95 + 75 = 170. Всего 141 + 150 + 170 = 461 > 448.
2) б) Кладем стекло в бак 1. Это будет 98 + 85 = 183. Тогда в бак 3 кладем жесть. 64 + 95 = 159 Всего 141 + 183 + 159 = 483 > 448.
3) Положим бумагу в бак 1. Это будет 83 + 83 = 166. 3) а) Положим стекло в бак 2. Это будет 52 + 85 = 137. Тогда жесть пойдет в бак 3. 64 + 95 = 159. Всего 166 + 137 + 159 = 465 > 448.
3) б) Положим стекло в бак 3. Это будет 52 + 98 = 150. Тогда жесть пойдет в бак 2. Это будет 64 + 75 = 139. Всего 166 + 150 + 139 = 455 > 448.
Я рассмотрел все 6 вариантов разложить 3 мусора по 3 бакам. ответ: минимальное количество перемещений равно 448.
// PascalABC.NET 3.1, сборка 1179 от 29.02.2016 procedure GetProdNeg(a:array of integer; var p:real); // произведение отрицательных элементов begin p:=a.Where(x->x<0).Aggregate(1.0,(p,e)->p*e) end;
function IsPrime(n:integer):boolean:= Range(2,Round(sqrt(n))).All(i->n mod i<>0);
procedure ArrPrime(n:integer; var a:array of integer); // массив простых чисел не больших n begin a:=Range(2,n).Where(i->IsPrime(i)).ToArray end;
begin var n:=ReadInteger('n='); var a:=ArrRandom(n,-50,50); a.Println; var r:real; GetProdNeg(a,r); Writeln('Произведение ',r); n:=ReadInteger('n='); var b:array of integer; ArrPrime(n,b); b.Println end.
1)
program mas1;
var
arr: array[1..10] of integer;
begin
randomize;
for var i := 1 to 10 do
begin
arr[i] := random(21);
write(arr[i], ' ');
end;
end.
2)
program mas2;
var
arr: array[1..10] of integer;
begin
randomize;
for var i := 1 to 10 do
begin
arr[i] := random(20 - 3 + 1) + 3;
write(arr[i], ' ');
end;
end.
3)
program mas3;
var
arr: array[1..10] of integer;
begin
arr[1] := 2;
write(arr[1], ' ');
for var i := 2 to 10 do
begin
arr[i] := arr[i - 1] + 2;
write(arr[i], ' ');
end;
end.
Объяснение:
1)
program mas1; // Название программы
var
arr: array[1..10] of integer; // Целочисленный массив, состоящий из 10 элементов
begin // Начало программы
randomize; // Процедура для инициализации датчика случайных чисел
for var i := 1 to 10 do // Идём от 1 до 10 индексов
begin // Начало цикла
arr[i] := random(21); // Заполняем массив случайными числами в диапазоне [0, 21)
write(arr[i], ' '); // Выводим через пробел
end; // Конец цикла
end. // Конец программы
2)
program mas2; // Название программы
var
arr: array[1..10] of integer; // Целочисленный массив, состоящий из 10 элементов
begin // Начало программы
randomize; // Процедура для инициализации датчика случайных чисел
for var i := 1 to 10 do // Идём от 1 до 10 индексов
begin // Начало цикла
arr[i] := random(20 - 3 + 1) + 3; // Заполняем массив случайными числами в диапазоне [3, 20] по формуле:
Значение = (b - a + 1) + a
write(arr[i], ' '); // Выводим через пробел
end; // Конец цикла
end. // Конец программы
3)
program mas3; // Название программы
var
arr: array[1..10] of integer; // Целочисленный массив, состоящий из 10 элементов
begin // Начало программы
arr[1] := 2; // Первый элемент массива = 2
write(arr[1], ' '); // Выводим его и ставим пробел
for var i := 2 to 10 do // Идём от 2 до 10 индексов
begin // Начало цикла
arr[i] := arr[i - 1] + 2; // Прибавляем к предыдущему элементу массива двойку
write(arr[i], ' '); // Выводим через пробел
end; // Конец цикла
end. // Конец программы