Демовариант ЕГЭ по информатике 2022 года, задание 17

Демовариант ЕГЭ по информатике 2022 года, задание 17

Задание

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

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

Решение с массивом

Алгоритм решения задачи следующий:

  1. Открыть файл с данными и прочитать их.
  2. Найти максимальный элемент последовательности кратный 3.
  3. Перебирая элементы попарно, найти пару у которой:
    • делится хотя бы один элемент из пары на 3;
    • сумма элементов не более максимального элемента последовательности, кратного 3.
  4. На основании п. 2, подсчитать количество пар и максимальную сумму пары элементов.

Поскольку нам необходимо найти максимальный элемент кратный 3, а затем эти же значения перебирать попарно, то считаем все элементы последовательности в список. Одновременно с этим будем находить максимальный элемент кратный 3.

with open("17.txt", "r") as f:
    s = []
    maxs = -10001
    for i in f:
        s.append(int(i))
        if int(i) % 3 == 0:
            maxs = max(maxs,int(i))

Попарно перебираем элементы списка и выясняем: делится хотя бы один элемент из пары на 3; сумма элементов не более максимального элемента последовательности, кратного 3. Если условия выполняются, то увеличиваем и счетчик и проверяем сумму - максимальна ли она:

    k = 0
    sums = 0
    for i in range(len(s)-1):
       if (s[i] % 3 == 0 or s[i+1] % 3 == 0) and (s[i] + s[i+1]) <= maxs:
            k += 1
            sums = max(sums,s[i] + s[i+1])

Полный текст программы выглядит следующим образом:

with open("17.txt", "r") as f:
    s = []
    maxs = -10001
    for i in f:
        s.append(int(i))
        if int(i) % 3 == 0:
            maxs = max(maxs,int(i))
    k = 0
    sums = 0
    for i in range(len(s)-1):
       if (s[i] % 3 == 0 or s[i+1] % 3 == 0) and (s[i] + s[i+1]) <= maxs:
            k += 1
            sums = max(sums,s[i] + s[i+1])

print(k, sums)

Ответ: 2439 998.

Выберите соответствующий номер задания в демонстрационном варианте ЕГЭ 2022 года

Информация

Все изображения, размещенные на сайте, изготовлены автором самостоятельно, а также взяты в сети Интернет из тех изображений, которые находятся в свободном доступе. Поиск изображений осуществлялся посредством "Яндекс. Картинки".

Индекс цитирования

Проект при поддержке компании RU-CENTER Рейтинг@Mail.ru

Версия сайта для слабовидящих