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

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

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

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

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

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

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

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

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

 

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


i
СВОЙСТВА ЗАДАНИЯ
КЭС:
3.10 Массивы и последовательности чисел. Вычисление обобщённых характеристик элементов массива или числовой последовательности (суммы, произведения, среднего арифметического, минимального и максимального элементов, количества элементов, удовлетворяющих заданному условию). Линейный поиск заданного значения в массиве. Алгоритмы работы с элементами массива с однократным просмотром массива. Сортировка одномерного массива. Простые методы сортировки (метод пузырька, метод выбора, сортировка вставками). Сортировка слиянием. Быстрая сортировка массива (алгоритм QuickSort). Двоичный поиск в отсортированном массиве
Тип ответа:Краткий ответ
Номер: 204C0F
НЕ РЕШЕНО Ответить

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

Ответ: 453 285731

Решение.
В файле 6685 чисел. Тройка — только три соседних элемента; произвольные сочетания из файла не рассматриваем. Соседние тройки могут иметь общие элементы, и каждая проверяется отдельно.

Сначала по всей последовательности находим M — наибольшее значение среди чисел, десятичная запись которых оканчивается на 27. Проверка окончания: abs(x) % 100 == 27. Модуль нужен только для цифр записи; сам максимум берём по исходным значениям, сохраняя знак. Из файла получаем M = 73627.

Число имеет 5 цифр тогда и только тогда, когда 10000 ≤ |x| < 100000. Знак минуса не является цифрой, а правая граница не включается. В каждой тройке считаем k — количество элементов с таким числом цифр. По условию требуется не менее одного: проверяем k >= 1.

После проверки количества цифр находим обычную сумму трёх исходных чисел S, с их знаками. Второе условие: S ≥ M. Равенство допускается. Если обе проверки пройдены, увеличиваем счётчик и обновляем наибольшую подходящую сумму. Начальное значение максимума — None, чтобы не предполагать положительность ответа.

Все начала троек имеют индексы от 0 до N − 3 включительно. Поэтому range(len(a) - 2) проверяет каждую тройку ровно один раз и не выходит за конец файла.

Программа Python; data.txt — исходный текстовый файл из архива:

with open("data.txt", encoding="utf-8-sig") as f:
    a = list(map(int, f.read().split()))
M = max(x for x in a if abs(x) % 100 == 27)
count = 0
best = None
for i in range(len(a) - 2):
    triple = a[i:i + 3]
    k = sum(10000 <= abs(x) < 100000 for x in triple)
    total = sum(triple)
    if k >= 1 and total >= M:
        count += 1
        if best is None or total > best:
            best = total
print(count, best)

Получаем 453 подходящих троек; наибольшая сумма равна 285731.

Проверка максимума. В тройке с первым элементом на позиции 418 (нумерация от 1) стоят числа 95870, 90500, 99361. Их сумма 95870 + 90500 + 99361 = 285731. Эта тройка удовлетворяет обоим условиям. Независимый проход по всем окнам подтвердил и количество, и максимальную сумму; существование одного примера не заменяет полный перебор.

Сложность двух проходов линейная по количеству чисел; внутри каждой тройки выполняется постоянное число операций.

Ответ: 453 285731.

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

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

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

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

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

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

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