#1-27 номера ЕГЭ по информатике
March 22, 2023
17 Разбор номера 37371 ЕГЭ по информатике от 2023 года #17
Условие: Тип 17 № 37371
В файле содержится последовательность из 10 000 целых положительных чисел. Каждое число не превышает 10 000.
Определите и запишите в ответе сначала количество пар элементов последовательности, у которых разность элементов кратна 60, затем максимальную из разностей элементов таких пар. В данной задаче под парой подразумевается два различных элемента последовательности.
Для выполнения этого задания следует написать программу. Ссылка на файл, который необходимо обработать с помощью данного алгоритма.
Комментарии к первому варианту решения задачи:
- Открываем наш файл
- Создаём список
M
, считываем все строки из файла и преобразуем каждую строку в целое число - Создаем переменную
maxi
, которая будет принимать максимальную из разностей элементов - и
count
, для счёта количества пар элементов - Пробегаем файл по элементам списка
- пробегаем ещё раз, т.е. по элементам, которые будут различны с первым
- Если разность элементов кратна 60
- то добавляем
+1
к значению переменнойcount
- и приравниваем переменной
maxi
максимальную из разностей элементов таких пар - выводим количество и максимальное значение
# Код решения Вариант 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)
Комментарии ко второму варианту решения задачи:
- импортируем в проект встроенную библиотеку
itertools
- открываем файл для чтения
- записываем содержимое в список
M
, каждый элемент списка приводим к типуint()
- создаем переменную
maxi
для поиска максимального значения разностей элементов пар - создаем переменную
count
для подсчета количества пар - с помощью цикла for и функции
combinations
из модуляitertools
создаем все возможные комбинации из двух элементов списка M и каждую комбинацию записываем в переменнуюi
- если разность первого и второго элементов пары является кратной 60
- то увеличиваем
count
на 1 - и находим максимальное значение разности элементов пары с помощью функции
max
- выводим в консоль значение переменных
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)