Задача к ЕГЭ по информатике на тему «Программирование — Обработка целочисленной информации с использованием сортировки» №1

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

Робот складывает монеты в ящики. Задача робота заполнить как можно большее количество ящиков монетами в количестве 100  штук. Роботу по конвейеру поступают корзины с монетами. В каждой корзине может быть от 1  до     99  монет. Известно, что робот может высыпать в ящик содержимое не более двух корзин. Корзина должна быть высыпана в ящик полностью. Необходимо определить, сколько ящиков можно заполнить монетами так, чтобы в каждом из них было ровно по 100  монет.

Входные данные

В первой строке записано число N  – количество корзин, в каждой из последующих N  строк число K  – количество монет в каждой корзине.

Выходные данные

В ответе запишите одно число – количество ящиков, заполненными 100  монетами.

Пример организации исходных данных во входном файле:

7

10

44

66

90

65

47

34

При таких исходных данных можно заполнить только 2  ящика по 100  монет 10  + 90  и 66  + 34  . Ответ: 2  .

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Посчитаем корзины с определенным количеством монет, для этого заполним ячейки столбца B  цифрами от 1 до 99, и воспользуемся функцией СЧЁТЕСЛИ. Запишем в ячейку C1  следующую формулу =СЧЁТЕСЛИ(A1:A10000;B1), скопируем её на свободные клеточки столбца. Для удобства перенесем получившуюся таблицу на новый лист. Разделим данные таблицы на два столбца, перенесем значения A51  :B99  во второй столбец и воспользуемся настраиваемой сортировкой по убыванию. Посчитаем количество ящиков, которое можно сформировать. Для этого выберем минимум из количества корзин, в которых содержится 1 и 99 монет или 2 и 98 монет и тд. Заметим, что корзина с 50 монетами встречается четное количество раз, значит можно сформировать в два раза меньше ящиков, чем общее количество корзин. Общее количество получившихся ящиков равно 4653.

Решение 2 (Python)

f = open("26.txt")
n=int(f.readline())
array=[int(n) for n in f.readlines()]
array.sort()
counter = 0
for i in range(0, n - 1):
    for j in range(n - 1, i, -1):
        if (array[i] + array[j] == 100 and array[i] != 0 and array[j] != 0):
            counter += 1
            array[j] = 0
            break
print(counter)

Ответ: 4653
Оцените статью
Я решу все!