#1-27 номера ЕГЭ по информатике
March 22, 2023

17 Разбор номера 37371 ЕГЭ по информатике от 2023 года #17 

Условие: Тип 17 № 37371

В файле содержится последовательность из 10 000 целых положительных чисел. Каждое число не превышает 10 000.

Определите и запишите в ответе сначала количество пар элементов последовательности, у которых разность элементов кратна 60, затем максимальную из разностей элементов таких пар. В данной задаче под парой подразумевается два различных элемента последовательности.

Для выполнения этого задания следует написать программу. Ссылка на файл, который необходимо обработать с помощью данного алгоритма.

Вариант 1: решение перебором

Комментарии к первому варианту решения задачи:

  1. Открываем наш файл
  2. Создаём список M, считываем все строки из файла и преобразуем каждую строку в целое число
  3. Создаем переменную maxi, которая будет принимать максимальную из разностей элементов
  4. и count, для счёта количества пар элементов
  5. Пробегаем файл по элементам списка
  6. пробегаем ещё раз, т.е. по элементам, которые будут различны с первым
  7. Если разность элементов кратна 60
  8. то добавляем +1 к значению переменной count
  9. и приравниваем переменной maxi максимальную из разностей элементов таких пар
  10. выводим количество и максимальное значение
# Код решения Вариант 1
f = open('17.txt')
M = [int(i) for i in f]
maxi = 0
count = 0

for i in range(len(M) - 1):
    for j in range(i + 1, len(M)):
        if (M[i] - M[j]) % 60 == 0:
            count += 1
            maxi = max(maxi, abs(M[i] - M[j]))
print(count, maxi)

Вариант 2: с использованием метода combinations из библиотеки itertools

Комментарии ко второму варианту решения задачи:

  1. импортируем в проект встроенную библиотеку itertools
  2. открываем файл для чтения
  3. записываем содержимое в список M, каждый элемент списка приводим к типу int()
  4. создаем переменную maxi для поиска максимального значения разностей элементов пар
  5. создаем переменную count для подсчета количества пар
  6. с помощью цикла for и функции combinations из модуля itertools создаем все возможные комбинации из двух элементов списка M и каждую комбинацию записываем в переменную i
  7. если разность первого и второго элементов пары является кратной 60
  8. то увеличиваем count на 1
  9. и находим максимальное значение разности элементов пары с помощью функции max
  10. выводим в консоль значение переменных count и maxi
# Код решения Вариант 2
import itertools

f = open('17.txt')
M = [int(i) for i in f]

maxi = 0
count = 0

for i in itertools.combinations(M, 2):
    if (i[0] - i[1]) % 60 == 0:
        count += 1
        maxi = max(maxi, abs(i[0] - i[1]))

print(count, maxi)

Ответ:

8327229960