• Напишите пожалуйста на PascalABC

     

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

Ответы 1

  • 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.

      

      

    • Автор:

      hodge
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years