№ 7020 (Уровень: Базовый)
(М.Шагитов) В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от -100000 до 100000 включительно. Определите количество четверок последовательности, в которых остаток от деления ни одного из модулей чисел четверки на 111 не равен минимальному положительному элементу последовательности. В ответе запишите количество найденных четверок, затем минимальную из сумм элементов таких четверок. В данной задаче под четверкой подразумевается четыре идущих подряд элемента последовательности.
Файлы к заданию: 17.txt
Комментарии к первому варианту решения задачи:
M = [int(i) for i in open('lessons/17.txt')]
- мы открываем файл '17.txt'
и считываем из него целые числа. В результате получаем список M.A = min([i for i in M if i > 0])
- здесь мы находим минимальное положительное число в списке M
и присваиваем его переменной A
.count = 0
- это счетчик, который отвечает за количество подходящих четверок.mini = 99999999
- это переменная, которая хранит наименьшую сумму подходящих четверок.for i in range(0, len(M)-3):
- здесь мы перебираем все возможные четверки из списка M
.if all(abs(x) % 111 != A for x in M[i:i+4]):
- это условие, которое проверяет, что в данной четверке нет чисел, которые делятся на 111
с остатком A
.count += 1
- если условие выполняется, то мы увеличиваем счетчик count на 1.mini = min(mini, sum(M[i:i+4]))
- здесь мы выбираем наименьшее значение между переменной mini
и суммой текущей четверки из списка M
.print(count, mini)
- в конце программы мы выводим количество подходящих четверок и наименьшую сумму из этих четверок.M = [int(i) for i in open('17.txt')]
A = min([i for i in M if i > 0])
count = 0
mini = 99999999
for i in range(0, len(M)-3):
if all(abs(x) % 111 != A for x in M[i:i+4]):
count += 1
mini = min(mini, sum(M[i:i+4]))
print(count, mini)