Разбор 17.PNG

№ 7020 (Уровень: Базовый)

(М.Шагитов) В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от -100000 до 100000 включительно. Определите количество четверок последовательности, в которых остаток от деления ни одного из модулей чисел четверки на 111 не равен минимальному положительному элементу последовательности. В ответе запишите количество найденных четверок, затем минимальную из сумм элементов таких четверок. В данной задаче под четверкой подразумевается четыре идущих подряд элемента последовательности.

Файлы к заданию: 17.txt

Untitled

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

  1. M = [int(i) for i in open('lessons/17.txt')] - мы открываем файл '17.txt' и считываем из него целые числа. В результате получаем список M.
  2. A = min([i for i in M if i > 0]) - здесь мы находим минимальное положительное число в списке M и присваиваем его переменной A.
  3. count = 0 - это счетчик, который отвечает за количество подходящих четверок.
  4. mini = 99999999 - это переменная, которая хранит наименьшую сумму подходящих четверок.
  5. for i in range(0, len(M)-3): - здесь мы перебираем все возможные четверки из списка M.
  6. if all(abs(x) % 111 != A for x in M[i:i+4]): - это условие, которое проверяет, что в данной четверке нет чисел, которые делятся на 111 с остатком A.
  7. count += 1 - если условие выполняется, то мы увеличиваем счетчик count на 1.
  8. mini = min(mini, sum(M[i:i+4])) - здесь мы выбираем наименьшее значение между переменной mini и суммой текущей четверки из списка M.
  9. 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)