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

Дана последовательность целых чисел, не превосходящих по модулю `10000`. Ноль - признак конца. Вывести минимальное произведение двух элементов этой последовательности.

Паскаль зфтш

👇
Ответ:
Davicc
Davicc
15.10.2021

На первый взгляд кажется, что задача простая. Поскольку последовательность состоит из целых чисел, то среди них могут быть и отрицательные, а значит, минимальное произведение получится, если умножить максимальное положительное число на минимальное отрицательное. Однако, это не так, если в последовательность входят только положительные или только отрицательные числа, поэтому такие случаи требуют особого рассмотрения.

Если все элементы последовательности положительные, то очевидно, что минимальное произведение – это произведение двух минимальных элементов последовательности. Если же все элементы последовательности отрицательные, то как ни странно, минимальное произведение дадут два максимальных элемента последовательности (так как они по модулю ближе всех к нулю, а минус на минус даёт плюс).

Таким образом, получается, что нам необходимо найти в последовательности два максимальных и два минимальных элемента, а потом выбрать минимальное произведение из трёх. Для одновременного поиска двух максимальных элементов можно использовать стратегию «турнирной таблицы». После считывания каждого элемента нужно будет сравнивать его с текущими значениями первого и второго максимума, и разбирать случаи. Их будет три. Первый случай – очередной элемент последовательности больше текущего значения первого максимума. Тогда нужно первый максимум опустить на вторую позицию, а на первую позицию записать новый элемент. Второй случай – элемент не больше первого максимума (возможно, что равен ему), но больше второго. Тогда первый максимум не изменяется, а на вторую позицию записывается считанный элемент. Третий случай – элемент не больше второго максимума (возможно, что равен ему). В этом случае нам не нужно предпринимать никаких действий. Минимумы ищутся аналогично.

Остаётся последний вопрос  – какие начальные значения задать максимумам и минимумам.  По аналогии с задачей № 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.

4,6(74 оценок)
Открыть все ответы
Ответ:
dashechka1707
dashechka1707
15.10.2021
//1. Переборный алгоритм Евклида (цикл repeat)

var a, b, с: integer; 

begin

  write('Введите два числа: ');

  readln(a, b);

  if a < b then с := a + 1 else с := b + 1;

repeat с := с - 1

  until (a mod с = 0) and (b mod с = 0);

  write('NOD = ', с)

end.

 

//2. Алгоритм с вычитанием (цикл while)

var  a, b: integer;

begin

  write('a = ');

  readln(a);

  write('b = ');

  readln(b);

  while a <> b do

    if a > b then

      a := a - b

    else

      b := b - a;

  writeln('NOD = ', a);

end.

4,4(78 оценок)
Ответ:
Russkikh11
Russkikh11
15.10.2021
Вопрос с подвохом, пропускная меряется не от возможной передачи на стороне провайдера или пользователя, а от версии протокола 2СH (2 цэ-аш). Рассмотрим 2 последние версии. Протокол 2015 года поддерживал пропускную вплоть до 20 MB/WEBM. Стандарт нового протокола поразили многих экспертов, скорость была снижена вдвое. Но сделано это было в связи с отказом многих производителей сетевого оборудования устанавливать расширяющие микросхемы PassCODE для поддержки тех самых 20 MB/WEBM. Может в будущем, с большим распространением PassCODE пропускную поднимут, но пока приходится с этими ограничениями смирится и перекодировать WEBM что несомненно, приведет к ухудшению их качества. 
4,8(70 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ