27 задание ЕГЭ экзамена 2020 г (со слов учащегося):
Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности, разность которых чётна, и в этих парах, по крайней мере, одно из чисел пары делится на 35. Порядок элементов в паре неважен. Среди всех таких пар нужно найти и вывести пару с максимальной суммой элементов. Если одинаковую максимальную сумму имеет несколько пар, можно вывести любую из них. Если подходящих пар в последовательности нет, нужно вывести два нуля.
Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности, разность которых чётна, и в этих парах, по крайней мере, одно из чисел пары делится на 35. Порядок элементов в паре неважен. Среди всех таких пар нужно найти и вывести пару с максимальной суммой элементов. Если одинаковую максимальную сумму имеет несколько пар, можно вывести любую из них. Если подходящих пар в последовательности нет, нужно вывести два нуля.
✍ Решение:
Паскаль (PascalABC):
const p = 35; var n, i, x, k35n, k35chet, n35chet, n35n, m1, m2: integer; begin readln(n); {количество чисел} readln(x); {первое число} // обнуление всех переменных k35chet := 0; // четный кратный n35chet := 0; // четный некратный k35n := 0; // нечетный кратный n35n := 0; // нечетный некратный m1 := 0; m2 := 0; // максимальные // цикл до n - 1, т.к. первое число уже считали for i := 1 to n - 1 do begin // проверка, если четный и кратный if (x mod p = 0) and (x mod 2 = 0) and (x > k35chet) then begin k35chet := x; end; // проверка, если четный и некратный if (x mod p <> 0) and (x mod 2 = 0) and (x > n35chet) then begin n35chet := x; end; // проверка, если нечетный и кратный if (x mod p = 0) and (x mod 2 = 1) and (x > k35n) then begin k35n := x; end; // проверка, если нечетный и некратный if (x mod p <> 0) and (x mod 2 = 1) and (x > n35n) then begin n35n := x; end; readln(x); // считываем очередное число // если x кратно и есть такое некратное n35chet, сумма с которым была бы больше чем m1 + m2 if (x mod p = 0) and ((x + n35chet) mod 2 = 0) and (x + n35chet > m1 + m2) and (n35chet > 0) then begin m1 := x; m2 := n35chet; end; // если x кратно и есть такое некратное n35n, сумма с которым была бы больше чем m1 + m2 if (x mod p = 0) and ((x + n35n) mod 2 = 0) and (x + n35n > m1 + m2) and (n35n > 0) then begin m1 := x; m2 := n35n; end; // если есть такое кратное k35n, сумма с которым была бы четной и больше чем m1 + m2 if ((x + k35n) mod 2 = 0) and (x + k35n > m1 + m2) and (k35n > 0) then begin m1 := x; m2 := k35n; end; // если есть такое кратное k35chet, сумма с которым была бы четной и больше чем m1 + m2 if ((x + k35chet) mod 2 = 0) and (x + k35chet > m1 + m2) and (k35chet > 0) then begin m1 := x; m2 := k35chet; end; end; writeln(m1, ' ', m2) end. |