1704.py

ФИПИ: Задание 17: Обработка числовой последовательности в файле В файле содержится последовательность целых чисел. Её элементы могут принимать целые значения от -100 000 до 100 000 включительно. Определите количество троек элементов последовательности, в которых не более двух из трёх элементов являются четырёхзначными числами, а сумма элементов тройки не больше максимального элемента последовательности, оканчивающегося на 25. В ответе запишите количество найденных троек, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.
"""
ФИПИ: Задание 17: Обработка числовой последовательности в файле

В файле содержится последовательность целых чисел. 
Её элементы могут принимать целые значения 
от -100 000 до 100 000 включительно. 

Определите количество троек элементов последовательности, 
в которых не более двух из трёх элементов являются 
четырёхзначными числами, а сумма элементов тройки 
не больше максимального элемента последовательности, 
оканчивающегося на 25.

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

В данной задаче под тройкой подразумевается 
три идущих подряд элемента последовательности.

"""

f = open('1704.txt') # открываем файл
#print(f.readline()) # для проверки

a = [int(s) for s in f] # читаем файл построчно и добавляем в список
#print(a) # для проверки

"""
ПРОВЕРКА УСЛОВИЯ: 
поиск максимального элемента оканчивающегося на 25
"""

max25 = [] # список для максимальных элементов оканчивающихся на 25
for x in a:
    if str(x)[-2:] == '25':
    # if abs(x) % 100 == 25: # другая проверка на оканчивание на 25
        max25.append(x)
max25 = max(max25) # находим максимальный элемент в списке

print(max25) # для проверки

"""
ПРОВЕРКА УСЛОВИЯ: 
не более двух из трёх элементов являются 
четырёхзначными числами 
и сумма элементов тройки не больше max25
"""
sum_tri = [] # список для сумм троек

for i in range(len(a) - 2):
    if not (len(str(abs(a[i]))) == 4 and len(str(abs(a[i+1]))) == 4 and len(str(abs(a[i+2]))) == 4):
    #if ((len(str(abs(a[i]))) == 4) + (len(str(abs(a[i+1]))) == 4) + (len(str(abs(a[i+2]))) == 4)) <= 2: # другая проверка на не более двух четырёхзначных чисел, основана на том что True + True + True = 3
        # проверка что не более двух из трёх элементов являются четырёхзначными числами
        # то есть если все три элемента четырёхзначные, то проверка не проходит
        # проверяем путем перевода модуля числа в строку и проверки длины
        if a[i] + a[i+1] + a[i+2] <= max25:
            sum_tri.append(a[i] + a[i+1] + a[i+2]) # добавляем сумму тройки в список

"""
ВЫВОДИМ ОТВЕТ: КОЛИЧЕСТВО ТРОЕК И МАКСИМАЛЬНУЮ СУММУ ТРОЕК
"""
print(len(sum_tri), max(sum_tri))
"""
ФИПИ: Задание 17: Обработка числовой последовательности в файле

В файле содержится последовательность целых чисел. 
Её элементы могут принимать целые значения 
от -100 000 до 100 000 включительно. 

Определите количество троек элементов последовательности, 
в которых не более двух из трёх элементов являются 
четырёхзначными числами, а сумма элементов тройки 
не больше максимального элемента последовательности, 
оканчивающегося на 25.

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

В данной задаче под тройкой подразумевается 
три идущих подряд элемента последовательности.

"""

f = open('1704.txt') # открываем файл
#print(f.readline()) # для проверки

a = [int(s) for s in f] # читаем файл построчно и добавляем в список
#print(a) # для проверки

"""
ПРОВЕРКА УСЛОВИЯ: 
поиск максимального элемента оканчивающегося на 25
"""

max25 = [] # список для максимальных элементов оканчивающихся на 25
for x in a:
    if str(x)[-2:] == '25':
    # if abs(x) % 100 == 25: # другая проверка на оканчивание на 25
        max25.append(x)
max25 = max(max25) # находим максимальный элемент в списке

print(max25) # для проверки

"""
ПРОВЕРКА УСЛОВИЯ: 
не более двух из трёх элементов являются 
четырёхзначными числами 
и сумма элементов тройки не больше max25
"""
sum_tri = [] # список для сумм троек

for i in range(len(a) - 2):
    if not (len(str(abs(a[i]))) == 4 and len(str(abs(a[i+1]))) == 4 and len(str(abs(a[i+2]))) == 4):
    #if ((len(str(abs(a[i]))) == 4) + (len(str(abs(a[i+1]))) == 4) + (len(str(abs(a[i+2]))) == 4)) <= 2: # другая проверка на не более двух четырёхзначных чисел, основана на том что True + True + True = 3
        # проверка что не более двух из трёх элементов являются четырёхзначными числами
        # то есть если все три элемента четырёхзначные, то проверка не проходит
        # проверяем путем перевода модуля числа в строку и проверки длины
        if a[i] + a[i+1] + a[i+2] <= max25:
            sum_tri.append(a[i] + a[i+1] + a[i+2]) # добавляем сумму тройки в список

"""
ВЫВОДИМ ОТВЕТ: КОЛИЧЕСТВО ТРОЕК И МАКСИМАЛЬНУЮ СУММУ ТРОЕК
"""
print(len(sum_tri), max(sum_tri))

Файлы данных

Репозиторий на GitHub