Пара элементов в массиве называется симметричной , если эти элементы находятся **...

0 голосов
183 просмотров

Пара элементов в массиве называется симметричной , если эти элементы находятся на одинаковом расстоянии от концов массива. Так в массиве размером N симметричными будут пары элементов с порядковыми номерами 1 и N , 2 и N - 1 и т.д. (при нумерации с единицы). Напишите программу, которая заполняет массив из N элементов случайными целыми числами в диапазоне [ A , B ] и определяет номера двух симметричных элементов этого массива, сумма которых чётная и максимальная среди всех пар симметричных элементов. Если ни одной такой пары нет, нужно вывести два нуля. Если есть несколько таких пар, нужно вывести номера элементов, составляющих пару, ближайшую к центру массива.

Входные данные
Входная строка содержит три числа: границы диапазона случайных чисел A и B , а также размер массива N . Все числа разделены пробелами. Гарантируется, что 0 < N ≤ 10000 .

Выходные данные
В первой строке программа должна вывести N элементов построенного массива, разделив их пробелами, а во второй строке – номера двух симметричных элементов массива, имеющих максимальную чётную сумму. Если ни одной такой пары нет, нужно вывести два нуля.

Примеры
входные данные
10 20 10
выходные данные
10 10 19 12 13 17 13 11 14 14
5 6


Информатика | 183 просмотров
Дан 1 ответ
0 голосов

123456789101112131415161718192021222324252627var  c: array[1..10000] of integer;  a, b, n, i, max, max1, max2, p, k, v, m: integer; begin  randomize;  max := -10000;  Readln(a, b, n);  for i := 1 to n do   begin    c[i] := random(b - a + 1) + a; Write(c[i], ' ');   end;  if ((n mod 2) = 0) then k := n div 2 else k := n div 2;  for p := 1 to k do   begin    m := c[p] + c[n - p + 1];    if ((m mod 2) = 0) and (m >= max) then     begin      max := m; max1 := p; max2 := n - p + 1; inc(v);     end;   end;  Writeln(' ');  if (v = 0) then     Writeln(0, ' ', 0)  else    Writeln(max1, ' ', max2);end.

(53 баллов)