Задание EGEINF42A7D2: Пары и тройки в числовых данных

ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий

Открыть решение ↓ Ошибка или пожелание

Тип задачи: Пары и тройки в числовых данных.

Учебные темы: Массивы и последовательности чисел. Вычисление обобщённых характеристик элементов массива или числовой последовательности (суммы, произведения, среднего арифметического, минимального и максимального элементов, количества элементов, удовлетворяющих заданному условию). Линейный поиск заданного значения в массиве. Алгоритмы работы с элементами массива с однократным просмотром массива. Сортировка одномерного массива. Простые методы сортировки (метод пузырька, метод выбора, сортировка вставками). Сортировка слиянием. Быстрая сортировка массива (алгоритм QuickSort). Двоичный поиск в отсортированном массиве.

Впишите правильный ответ.

Рисунок из условия ФИПИ

Задание выполняется с использованием прилагаемых файлов.

 

В файле содержится последовательность натуральных чисел. Её элементы могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых хотя бы одно число делится на минимальный элемент последовательности, кратный 19. Гарантируется, что такой элемент в последовательности есть. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

 

 

Скачать файл задания (TXT, ФИПИ)


i
СВОЙСТВА ЗАДАНИЯ
КЭС:
3.2 Оценка сложности вычислений. Время работы и объём используемой памяти, их зависимость от размера исходных данных. Оценка асимптотической сложности алгоритмов. Алгоритмы полиномиальной сложности. Переборные алгоритмы. Примеры различных алгоритмов решения одной задачи, которые имеют различную сложность
3.6 Язык программирования (Паскаль, Python, Java, C++, C#). Типы данных: целочисленные, вещественные, символьные, логические. Ветвления. Сложные условия. Циклы с условием. Циклы по переменной. Обработка данных, хранящихся в файлах. Текстовые и двоичные файлы. Файловые переменные (файловые указатели). Чтение из файла. Запись в файл. Разбиение задачи на подзадачи. Подпрограммы (процедуры и функции). Использование стандартной библиотеки языка программирования
Тип ответа:Краткий ответ
Номер: 42A7D2
НЕ РЕШЕНО Ответить

Решение задания EGEINF42A7D2

Ответ: 142 175430

Решение.
Используем исходный текстовый файл задания. В нём записаны сами элементы последовательности; отдельного числа с её длиной в начале файла нет. Сохраните файл рядом с программой под именем 1_17.txt.
Сначала находим среди всех элементов минимальное число M, кратное 19. Нельзя сразу проверять делимость членов пары на 19: требуется делимость на найденное число M.
В исходном файле N = 10000; минимум среди кратных 19 равен M = 114 = 19 · 6. Проверяем все N − 1 = 9999 соседних пар.
Для пары (x, y) условие отбора имеет вид (x mod M = 0) ИЛИ (y mod M = 0). Если оба числа делятся на M, пара всё равно учитывается один раз. Два независимых увеличения счётчика здесь дали бы ошибку.
Для каждой прошедшей пары вычисляем сумму s = x + y, увеличиваем счётчик и обновляем наибольшую сумму.
Проверим крайние по позиции подходящие пары и пару с максимальной суммой. Нумерация элементов начинается с 1.

НомерПервый элементВторой элементСумма
29136884297856666
2568846486966175430
9969393304564384973

Для максимума 88464 = 114 · 776, поэтому пара (88464, 86966) подходит. Её сумма равна 175430. Других подходящих пар с большей суммой при полном просмотре нет.
Программа на Python:

with open('1_17.txt', encoding='utf-8-sig') as f:
    a = [int(s) for s in f.read().split()]

limit = min(x for x in a if x % 19 == 0)
count = 0
best = None
for i in range(len(a) - 1):
    x, y = a[i], a[i + 1]
    if x % limit == 0 or y % limit == 0:
        count += 1
        if best is None or x + y > best:
            best = x + y
print(count, best)

Результат запуска на исходном файле: 142 175430.
Получено 142 подходящих пар.
Проверка полноты. Цикл посещает каждую допустимую начальную позицию ровно один раз, включая первую и последнюю. После каждой итерации счётчик равен числу подходящих уже просмотренных окон, а best хранит нужное крайнее значение среди них. Обновление выполняется только после проверки всех требований, поэтому итог учитывает в точности нужные окна.
Время работы линейно по числу элементов: один просмотр для порога и один для окон. Список a занимает O(N) памяти; дополнительные переменные требуют O(1).
Ответ: 142 175430.

Помочь улучшить сайт

Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF42A7D2.

Сообщение увидит только команда сайта: на странице оно не публикуется.

Комментарии к решению

Комментарии видны всем посетителям сайта.

Комментариев пока нет. Будьте первым.

Чтобы оставить комментарий, войдите или зарегистрируйтесь.