Найти в Дзене
InformaticsGuru

Задание 27. ЕГЭ по информатике. Часть 1.

Всем привет! Сегодня разбираю задание 27 из ЕГЭ по информатике, но пока мы не начали, попрошу вас подписаться и поставить лайки. Ну что ж, начнём? Для начала, вот вам условие: Набор данных состоит из троек натуральных чисел. Необходимо распределить все числа на три группы, при этом в каждую группу должно попасть ровно одно число из каждой исходной тройки. Сумма всех чисел в первой группе должна быть чётной, во второй — нечётной. Определите максимально возможную сумму всех чисел в третьей группе. К сожалению, сюда файлы с данными я прикрепить не могу, поэтому, если вам интересно, вы можете найти их у меня в телеграмме. Данную задачу я буду решать с помощью языка программирования Python. Сперва откроем первый файл и тут же закроем, чтобы потом не забыть. Теперь создадим массивы, в которых будем хранить данные о всех трёх группах, и назовём их довольно банально: Теперь необходимо добавить массив, в котором мы будем хранить разности элементов, чтобы в дальнейшем регулировать суммы каждой и

Всем привет! Сегодня разбираю задание 27 из ЕГЭ по информатике, но пока мы не начали, попрошу вас подписаться и поставить лайки. Ну что ж, начнём?

Для начала, вот вам условие:

Набор данных состоит из троек натуральных чисел. Необходимо распределить все числа на три группы, при этом в каждую группу должно попасть ровно одно число из каждой исходной тройки. Сумма всех чисел в первой группе должна быть чётной, во второй — нечётной. Определите максимально возможную сумму всех чисел в третьей группе.

К сожалению, сюда файлы с данными я прикрепить не могу, поэтому, если вам интересно, вы можете найти их у меня в телеграмме.

Данную задачу я буду решать с помощью языка программирования Python.

Сперва откроем первый файл и тут же закроем, чтобы потом не забыть.

рис.1 (работа с файлом)
рис.1 (работа с файлом)

Теперь создадим массивы, в которых будем хранить данные о всех трёх группах, и назовём их довольно банально:

рис.2 (массивы для групп)
рис.2 (массивы для групп)

Теперь необходимо добавить массив, в котором мы будем хранить разности элементов, чтобы в дальнейшем регулировать суммы каждой из групп. После чего добавляем переменную 'n', которая будет хранить в себе данные о количестве троек в данном файле.

рис.3
рис.3

Теперь надо распределить числа из троек по группам. Так как нам надо получить максимальную сумму в третьей группе, то действовать мы будем следующим образом:

  • Для начала прочитаем строчку из файла и присвоим полученные значения трём переменным и добавляем их в массив triplet. (далее на фото всё будет показано)
  • Затем выберем наименьшую переменную и запишем её в первую группу. После чего удаляем её из массива triplet. Следующую по величине переменную отправляем во вторую группу, затем удалям её из массива triplet. То же самое проделываем с оставшейся переменной, отправляя её в третью группу.
рис.4 (распределение по группам)
рис.4 (распределение по группам)

Далее выполняем следующие действия:

  1. Сортируем массив с разностями.
  2. Начинаем рассматривать суммы полученных групп. Проверяем сумму чисел первой группы на чётность. Если чётная, то оставляем всё как есть. Если нечётная - добавляем наименьшую нечётную разность, после чего удаляем её, чтобы не использовать второй раз в будущем.
  3. Повторяем п.2 со второй группой, на этот раз проверяя на нечётность.

Важная деталь: после того, как мы добавили разницу между переменными к сумме чисел первой группы, нам необходимо вычесть её из суммы чисел второй группы, иначе мы получим неверный ответ. (То же самое касается и третьей группы)

рис.5 (почти ответ)
рис.5 (почти ответ)

Полученную в ходе последней операции сумму чисел третьей группы мы записываем в ответ.

Для второго файла можно скопировать тот же код, только поменять название файла на необходимое.

Ответы: для файла А: 541; для файла Б: 300229428

На этом у меня всё, если что-то непонятно, пишите в мессенджер или в комментарии, на всё отвечу)

Всем спасибо и не забудьте поставить лайки!