Напишите пожалуйста на PascalABC
 
Дано N целых чисел. Требуется выбрать из них два таких числа, произведение которых максимально.Вводится сначала число N - количество чисел в последовательности (2 ≤ N ≤ 100). Далее записана сама последовательность: N целых чисел, по модулю не превышающих 1000.Выведите два искомых числа в любом порядке. Если существует несколько различных пар чисел, дающих максимальное произведение, то выведите любую из них.

Есть ответ
12.12.2022
194

Ответ


var

  N: 2..100;

  a: array [1..100] of -1000..1000;

  max1, max2, MaxPr, i, j: integer;  {MaxPr - максимальное произведение, max1 и max2 - искомые числа}

function RangeOverfilling(Number: integer; Index: integer): integer; {Функция, возвращающая число в диапазон} begin  if Number in [1..Index] then result := Number;  if Number > Index then result := Number mod Index;  if Number < 1 then result := Index + Number mod Index; end;

 

begin

  MaxPr:= -maxint; {Присваиваем максимальному проиведению начальное значение, равное максимальному числу типа integer, взятому со знаком -}

  writeln('Введите N');

  readln(N);

  for i:= 1 to N do

  begin

    writeln('Введите целое число, по модулю не превышающее 1000');

    readln(a[i]);

  end;

  for i:= 1 to N - 1 do

  for j:= 1 to RangeOverfilling(N - i, N) do

    if a[i] * a[i + j] > MaxPr then

    begin

      MaxPr:= a[i] * a[i + j];

      max1:= a[i];

      max2:= a[i + j];

    end;

  writeln('Пара чисел, дающих максимальное произведение: ', max1,' и ', max2);

end.

  

  


Если вы нашли правильное решение, вы можете поблагодарить нас начиная с 10 рублей.
Просто нажмите на кнопку "Подарить".
12.12.2022
Этот сайт использует cookies (Политика Cookies). Вы можете указать условия хранения и доступ к cookies в своем браузере.