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))