#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)