Область науки, посвященная всестороннему исследованию трудового процесса, обеспечению безопасности и удобства для человека в системе "человек-технология-окружающая среда"
На первый взгляд кажется, что задача простая. Поскольку последовательность состоит из целых чисел, то среди них могут быть и отрицательные, а значит, минимальное произведение получится, если умножить максимальное положительное число на минимальное отрицательное. Однако, это не так, если в последовательность входят только положительные или только отрицательные числа, поэтому такие случаи требуют особого рассмотрения.
Если все элементы последовательности положительные, то очевидно, что минимальное произведение – это произведение двух минимальных элементов последовательности. Если же все элементы последовательности отрицательные, то как ни странно, минимальное произведение дадут два максимальных элемента последовательности (так как они по модулю ближе всех к нулю, а минус на минус даёт плюс).
Таким образом, получается, что нам необходимо найти в последовательности два максимальных и два минимальных элемента, а потом выбрать минимальное произведение из трёх. Для одновременного поиска двух максимальных элементов можно использовать стратегию «турнирной таблицы». После считывания каждого элемента нужно будет сравнивать его с текущими значениями первого и второго максимума, и разбирать случаи. Их будет три. Первый случай – очередной элемент последовательности больше текущего значения первого максимума. Тогда нужно первый максимум опустить на вторую позицию, а на первую позицию записать новый элемент. Второй случай – элемент не больше первого максимума (возможно, что равен ему), но больше второго. Тогда первый максимум не изменяется, а на вторую позицию записывается считанный элемент. Третий случай – элемент не больше второго максимума (возможно, что равен ему). В этом случае нам не нужно предпринимать никаких действий. Минимумы ищутся аналогично.
Остаётся последний вопрос – какие начальные значения задать максимумам и минимумам. По аналогии с задачей № 2 в максимумы нужно записывать числа, которые гарантированно меньше любого элемента последовательности, а в минимумы – числа, которые гарантированно больше любого элемента последовательности.
var a,max1,max2,min1,min2,p:integer;
begin
max1 := -10001;
max2 := -10001;
min1 := 10001;
min2 := 10001;
read(a);
while a <> 0 do begin
if a > max1
then begin
max2 := max1;
max1 := a
end
else if a > max2 then max2 := a;
if a < min1
then begin
min2 := min1;
min1 := a
end
else if a < min2 then min2:=a;
read(a)
end;
p := max1 * min1;
if max1 * max2 < p then p := max1 * max2;
if min1 * min2 < p then p := min1 * min2;
writeln(p)
end.
keti0290103
02.05.2023
1.сколько цветов будет содержать палитра, если каждый базовый цвет кодировать двумя битами? 2^2=4 2.Какой объем видеопамяти в в кбайтах нужен для хранения изображения размером 640х250 пикселей и используещего 16-цветную политуру ? 16=2^4 640*250*4= 640000 бит= 640000/8 байт=80000/1024Кб=78,125Кб 3.видеопамять имеет объем, в котором может хранится 4-х цветное изображение размером 300х200. Какого размера изображение можно хранить в том же объеме памяти, если оно будет использовать 256-ти цветную палитру? 300х200*2=120000 бит 256=2^8 120000бит/8= 15000 -> Ширина*высоту <= 15000 пискселей, например 150*100 4.Сколько цветов можно максимально использовать для хранения изображения размером 350x200 пикселей если объем страницы видеопамяти 65 кбайт 65кб/(35*200)=65кб/(35*200)*8*1024=76,06857143 76>=2^6 -> кол-во цветов 6 5.Пусть видеопамять компьютера имеет объем 512 кбайт. Размер графической сетки 640x480. Сколько страниц может одновременно разместиться в видеопамяти при палитре из 256 цветов? 256=2^8 8*640*480=2457600 бит=300кб Таким образом одна страница
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Область науки, посвященная всестороннему исследованию трудового процесса, обеспечению безопасности и удобства для человека в системе "человек-технология-окружающая среда"
На первый взгляд кажется, что задача простая. Поскольку последовательность состоит из целых чисел, то среди них могут быть и отрицательные, а значит, минимальное произведение получится, если умножить максимальное положительное число на минимальное отрицательное. Однако, это не так, если в последовательность входят только положительные или только отрицательные числа, поэтому такие случаи требуют особого рассмотрения.
Если все элементы последовательности положительные, то очевидно, что минимальное произведение – это произведение двух минимальных элементов последовательности. Если же все элементы последовательности отрицательные, то как ни странно, минимальное произведение дадут два максимальных элемента последовательности (так как они по модулю ближе всех к нулю, а минус на минус даёт плюс).
Таким образом, получается, что нам необходимо найти в последовательности два максимальных и два минимальных элемента, а потом выбрать минимальное произведение из трёх. Для одновременного поиска двух максимальных элементов можно использовать стратегию «турнирной таблицы». После считывания каждого элемента нужно будет сравнивать его с текущими значениями первого и второго максимума, и разбирать случаи. Их будет три. Первый случай – очередной элемент последовательности больше текущего значения первого максимума. Тогда нужно первый максимум опустить на вторую позицию, а на первую позицию записать новый элемент. Второй случай – элемент не больше первого максимума (возможно, что равен ему), но больше второго. Тогда первый максимум не изменяется, а на вторую позицию записывается считанный элемент. Третий случай – элемент не больше второго максимума (возможно, что равен ему). В этом случае нам не нужно предпринимать никаких действий. Минимумы ищутся аналогично.
Остаётся последний вопрос – какие начальные значения задать максимумам и минимумам. По аналогии с задачей № 2 в максимумы нужно записывать числа, которые гарантированно меньше любого элемента последовательности, а в минимумы – числа, которые гарантированно больше любого элемента последовательности.
var a,max1,max2,min1,min2,p:integer;
begin
max1 := -10001;
max2 := -10001;
min1 := 10001;
min2 := 10001;
read(a);
while a <> 0 do begin
if a > max1
then begin
max2 := max1;
max1 := a
end
else if a > max2 then max2 := a;
if a < min1
then begin
min2 := min1;
min1 := a
end
else if a < min2 then min2:=a;
read(a)
end;
p := max1 * min1;
if max1 * max2 < p then p := max1 * max2;
if min1 * min2 < p then p := min1 * min2;
writeln(p)
end.