Задание 27 ЕГЭ по информатике · 0B12A6

Программа и описание алгоритмаВысокаяКЭС 3.2КЭС 3.3
Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности, удовлетворяющие следующим условиям: числа в паре имеют различные остатки от деления на d=120, и по крайней мере одно из чисел пары делится на p=7. Порядок элементов в паре неважен. Среди всех таких пар нужно найти и вывести пару с максимальной суммой элементов. Если одинаковую максимальную сумму имеет несколько пар, можно вывести любую из них. Если подходящих пар в последовательности нет, нужно вывести два нуля.
В первой строке входных данных задаётся количество чисел N (2≤N≤10 000). В каждой из последующих N строк записано одно натуральное число, не превышающее 10 000.
Напишите эффективную по времени и памяти программу для решения этой задачи. Опишите алгоритм решения перед текстом программы и укажите использованный язык программирования и его версию. Программа должна использовать не более 1 Кбайт памяти, а её время работы не должно зависеть от параметра d.

Развёрнутый ответ: проверяется по критериям ФИПИ.

Подсказки (3)
  1. Какие свойства двух чисел нужно проверять: делимость хотя бы одного из них на 7 и различие остатков по модулю 120?
  2. Для каждого нового числа достаточно хранить лучшие ранее встреченные числа двух типов: делящиеся и не делящиеся на 7, сгруппированные по остаткам. Чтобы память не зависела от d, используйте только фиксированные остатки по модулю 120.
  3. Обрабатывайте числа последовательно. Для числа x переберите сохранённые максимумы по всем остаткам, отличным от x mod 120, проверьте условие делимости на 7, обновите лучшую пару, затем сохраните x в группе его остатка.
Решение
1. Числа рассматриваются по одному. Для каждого остатка от деления на 120 храним два максимальных значения: максимальное число, делящееся на 7, и максимальное число, не делящееся на 7. Вместе с каждым значением сохраняем само число.

2. Для очередного числа x перебираем все остатки r, отличные от x mod 120. Пара допустима, если x делится на 7 или сохранённое число делится на 7. Поэтому при x, кратном 7, можно брать максимальное сохранённое число любого типа, а иначе — только максимальное число, кратное 7.

3. Если найденная сумма больше текущей максимальной суммы, запоминаем пару. После проверки помещаем x в соответствующую группу остатка и при необходимости заменяем хранимый максимум.
O(N⋅d)

4. В данной задаче d=120, поэтому перебор 120 остатков является константным относительно N. Используется постоянное количество переменных и массивов фиксированного размера, то есть память не растёт с N и d.
O(N)

5. Один из вариантов программы на Python 3:
Частые ошибки
  • Разрешают пару двух чисел с одинаковыми остатками по модулю 120.
  • Проверяют делимость на 7 только для текущего числа, но не учитывают делимость ранее сохранённого числа.
  • Обновляют максимумы до проверки пары с текущим числом и тем самым используют один и тот же элемент дважды.
  • Хранят все входные числа или матрицу пар, из-за чего нарушается ограничение по памяти.
  • Выводят два нуля при отсутствии пары, но не обрабатывают случай, когда подходящая пара не найдена.

Источник: Открытый банк ФИПИ

Похожие задания

27Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 04D7CD27На вход программы поступает последовательность из n целых положительных чисел. Рассматриваются все пары…Программа и описание алгоритма · 195BE627Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 4…Программа и описание алгоритма · 233FD127Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 26775227Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 2931D927Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 3…Программа и описание алгоритма · 29FE8627Рассматриваются все пары различных элементов последовательности, находящихся на расстоянии не меньше чем 4…Программа и описание алгоритма · 2C4C0127Дана последовательность N целых положительных чисел. Рассматриваются все пары элементов последовательности…Программа и описание алгоритма · 335BFF

Нужен репетитор по информатике?

Посмотрите репетиторов, которые ведут занятия в Precettore, или оставьте заявку — подберём сами.

Репетиторы по информатике

Подбор репетитора

Напишите, что нужно, — команда Precettore подберёт репетитора и свяжется с вами.

Готовьтесь к ЕГЭ по информатике в Precettore

Варианты с автопроверкой, домашние задания от репетитора, онлайн-доска и разбор ошибок — в одном кабинете. Регистрация бесплатная.