№ 5672 Вариант 09.01.23 (Уровень: Базовый)
(М. Ишимов) В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 10 000 включительно. Определите количество пар последовательности, в которых оба числа не меньше всех чисел последовательности, которые кратны 73. Гарантируется, что такой элемент в последовательности есть. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
Файлы к заданию: 17.txt
Комментарии к коду программы:
M = [int(i) for i in open('17.txt')]
- Открываем файл 17.txt, читаем его содержимое, и преобразуем каждую строку в целое числоA = [i for i in M if i % 73 == 0 and i > 0]
- Создаем список A
, который содержит все элементы списка M
, которые кратны 73 и больше 0 (иначе 0 % 73 == 0
, что для нас неприемлемо)count = 0
- Создаем переменную count
, которая будет хранить кол-во подходящих строкmaxi = 0
- Создаем переменную maxi
, которая будет хранить максимальную сумму элементов парыfor i in range(0, len(M)-1):
- Используем цикл for
, чтобы перебрать все элементы списка M
, кроме последнего элемента (чтобы не выйти из диапазона из-за i+1)if all(M[i] >= x for x in A) and all(M[i+1] >= x for x in A):
- Проверяем, каждый элемент в списке A
, должен быть меньше или равен M[i]
и M[i+1]
count += 1
- Увеличиваем переменную count
на 1, если условие истинноmaxi = max(maxi, M[i] + M[i+1])
- Находим максимальное значение суммы M[i] + M[i+1]
с помощью функции max()
, перезаписываем ее саму в себяprint(count, maxi)
- Выводим результат на экран – переменные count
и maxi
M = [int(i) for i in open('17.txt')]
A = [i for i in M if i % 73 == 0 and i > 0]
count = 0
maxi = 0
for i in range(0, len(M)-1):
if all(M[i] >= x for x in A) and all(M[i+1] >= x for x in A):
count += 1
maxi = max(maxi, M[i] + M[i+1])
print(count, maxi)