Разбор 17.PNG

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

В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите количество троек, в которых хотя бы один из трёх элементов меньше, чем среднее арифметическое всех чисел в файле, и десятичная запись всех трёх элементов тройки содержит цифру 9. В ответе запишите два числа: сначала количество найденных троек, а затем – максимальную сумму элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

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

Untitled

Комментарии к коду решения:

  1. M = [int(x) for x in open('17.txt')] - считывает все числа из файла '17.txt' и сохраняет их в виде списка M, преобразуя каждое число в целое.
  2. avg = sum(M) / len(M) - вычисляет среднее значение всех чисел в списке M.
  3. R = [] - создает пустой список R, в который будут добавляться результаты.
  4. Цикл for i in range(len(M)-2): проходит по всем элементам списка M, за исключением последних двух элементов.
  5. x, y, z = M[i], M[i+1], M[i+2] - присваивает значения ткущего элемента M[i], следующего элемента M[i+1] и элемента через один M[i+2] переменным x, y и z соответственно.
  6. Условие if x < avg or y < avg or z < avg: проверяет, выполняется ли хотя бы одно из условий: значение x, y или z меньше среднего значения avg.
  7. if all('9' in str(a) for a in [x, y, z]): - проверяет, содержит ли каждое из чисел x, y и z цифру '9'.
  8. Если оба условия выполняются, то значение x + y + z добавляется в список R.
  9. print(len(R), max(R)) - выводит на экран количество элементов в списке R и максимальное значение из списка R.

Таким образом, данный код считывает числа из файла, вычисляет среднее значение, проверяет числа по заданным условиям и выводит количество элементов и максимальное значение, удовлетворяющее условиям.

M = [int(x) for x in open('17.txt')]
avg = sum(M) / len(M)
R = []
for i in range(len(M)-2):
    x, y, z = M[i], M[i+1], M[i+2]
    if x < avg or y < avg or z < avg:
        if all('9' in str(a) for a in [x, y, z]):
            R.append(x + y + z)
print(len(R), max(R))

Ответ: