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

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

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

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

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

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

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

 

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

 

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

 

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


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

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

Ответ: 1214 176024

Решение.
Прочитаем все числа из demo2025_17.txt. Сначала найдём минимум всей последовательности m. Нельзя брать минимум отдельно для каждой пары: по условию он один для всего файла. В исходных данных m = 8.
Пара состоит из соседних элементов. Поэтому рассматриваем позиции 1 и 2, затем 2 и 3, далее 3 и 4 и так до конца. Пары могут пересекаться по одному элементу.
Для очередных x и y проверяем остатки при делении на 16. Пара подходит, если хотя бы один остаток равен m: x % 16 = m или y % 16 = m. Если подходят оба числа, пару всё равно учитываем один раз.
Для каждой подходящей пары увеличиваем счётчик и сравниваем сумму x + y с наибольшей ранее найденной суммой. Программа на Python 3:

Перед запуском сохраните скачанный файл под именем demo2025_17.txt рядом с программой.

with open('demo_2025_17.txt') as source:
    numbers = [int(line) for line in source]
minimum = min(numbers)
count = 0
largest_sum = 0
for left, right in zip(numbers, numbers[1:]):
    if left % 16 == minimum or right % 16 == minimum:
        count += 1
        largest_sum = max(largest_sum, left + right)
print(count, largest_sum)

В файле 10000 чисел, следовательно, просмотрены 9999 соседних пар. Получено 1214 подходящих пар, наибольшая сумма равна 176024.
Проверка первых подходящих пар: числа 22129 и 34648 дают сумму 56777. Остаток 34648 при делении на 16 равен 8, поэтому пара подходит. Следующая пара 34648 и 34651 тоже подходит и имеет сумму 69299. Обе пары необходимо учесть, хотя элемент 34648 общий.
Независимый проход по индексам подтвердил все 1214 позиций и максимальную сумму. В ответе сначала записываем количество, затем максимум суммы. Время работы O(N), память для хранения последовательности O(N).
Ответ: 1214 176024.

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

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

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

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

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

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

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