Разбор 17.PNG

Тип 17 №61363

Файл содержит последовательность натуральных чисел, не превышающих 100 000. Назовём тройкой три идущих подряд элемента последовательности.

Определите количество троек, для которых выполняются следующие условия:

— ровно два числа в тройке четырёхзначные;

— хотя бы одно число в тройке делится на 3;

— сумма элементов тройки больше максимального элемента последовательности, запись которого заканчивается на 19. (Гарантируется, что в последовательности есть хотя бы один элемент, запись которого заканчивается на 19.)

В ответе запишите два числа: сначала количество найденных троек, затем максимальную величину суммы элементов этих троек.

Скачать файл: Задание 17

Untitled

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

  1. M = [int(x) for x in open('17.txt')] - Создание списка M, содержащего все целочисленные значения из файла '17.txt'.
  2. A = [x for x in M if str(x)[-2:] == '19'] - Создание списка A, включающего только те значения из списка M, которые оканчиваются на 19.
  3. count = 0 - Инициализация счетчика count, для счета подходящих троек.
  4. maxi = 0 - Инициализация переменной maxi для хранения максимальной суммы троек.
  5. for i in range(0, len(M)-2): - Итерация по индексам i от 0 до len(M)-2.
  6. x, y, z = M[i], M[i+1], M[i+2] - Присвоение переменным x, y, z значений из списка M по индексам i, i+1, i+2.
  7. if sum([len(str(abs(j))) == 4 for j in [x, y, z]]) == 2: - Проверка, что ровно два из трех чисел x, y, z являются четырехзначными.
  8. if sum([abs(j) % 3 == 0 for j in [x, y, z]]) >= 1: - Проверка, что хотя бы одно из трех чисел делится на 3 без остатка.
  9. if sum([x, y, z]) > max(A): - Проверка, что сумма x, y, z больше максимального значения из списка A.
  10. count += 1 - Увеличение счетчика count на 1, если все условия выполнены.
  11. maxi = max(maxi, x + y + z) - Обновление значения переменной maxi.
  12. print(count, maxi) - Вывод значений счетчика count и переменной maxi.
M = [int(x) for x in open('17.txt')]
A = [x for x in M if str(x)[-2:] == '19']

count = 0
maxi = 0
for i in range(0, len(M)-2):
    x, y, z = M[i], M[i+1], M[i+2]
    if sum([len(str(abs(j))) == 4 for j in [x, y, z]]) == 2:
        if sum([abs(j) % 3 == 0 for j in [x, y, z]]) >= 1:
            if sum([x, y, z]) > max(A):
                count += 1
                maxi = max(maxi, x + y + z)
print(count, maxi)

Ответ: