1705.py
ФИПИ: Задание 17: Обработка числовой последовательности в файле
В файле содержится последовательность целых чисел.
Её элементы могут принимать целые значения
от -100 000 до 100 000 включительно.
Определите количество троек последовательности,
в которых все числа одного знака,
при этом произведение минимального и максимального
элементов тройки больше квадрата минимального элемента
последовательности, который оканчивается на 15 и является трёхзначным числом.
В ответе запишите количество найденных троек чисел,
затем минимальное из произведений максимального
и минимального элементов таких троек.
В данной задаче под тройкой подразумевается
три идущих подряд элемента последовательности.
"""
ФИПИ: Задание 17: Обработка числовой последовательности в файле
В файле содержится последовательность целых чисел.
Её элементы могут принимать целые значения
от -100 000 до 100 000 включительно.
Определите количество троек последовательности,
в которых все числа одного знака,
при этом произведение минимального и максимального
элементов тройки больше квадрата минимального элемента
последовательности, который оканчивается на 15 и является трёхзначным числом.
В ответе запишите количество найденных троек чисел,
затем минимальное из произведений максимального
и минимального элементов таких троек.
В данной задаче под тройкой подразумевается
три идущих подряд элемента последовательности.
"""
f = open('1705.txt') # открываем файл
#print(f.readline()) # для проверки
a = [int(s) for s in f] # читаем файл построчно и добавляем в список
#print(a) # для проверки
"""
ПРОВЕРКА УСЛОВИЯ:
минимального элемента
последовательности, который оканчивается на 15
и является трёхзначным числом
"""
min15 = [] # список для минимальных элементов оканчивающихся на 15
for x in a:
if str(x)[-2:] == '15' and len(str(abs(x))) == 3:
# if abs(x) % 100 == 15: # другая проверка на оканчивание на 15
min15.append(x)
min15 = min(min15) # находим минимальный элемент в списке
print(min15) # для проверки
"""
ПРОВЕРКА УСЛОВИЯ:
все числа одного знака,
при этом произведение минимального и максимального
элементов тройки больше квадрата min15
"""
umn_tri = [] # список для произведений троек
for i in range(len(a) - 2):
if ((a[i] > 0 and a[i +1] > 0 and a[i +2] > 0)
or (a[i] < 0 and a[i +1] < 0 and a[i +2] < 0)) and \
max(a[i:i+3]) * min(a[i:i+3]) > min15 ** 2: # проверка что произведение тройки больше квадрата минимального элемента оканчивающегося на 15
umn_tri.append(max(a[i:i+3]) * min(a[i:i+3])) # доб произведения максимального и минимального элементов тройки
"""
ВЫВОДИМ ОТВЕТ: КОЛИЧЕСТВО ТРОЕК И МИНИМАЛЬНОЕ ПРОИЗВЕДЕНИЕ ТРОЕК
"""
print(len(umn_tri), min(umn_tri))
"""
ФИПИ: Задание 17: Обработка числовой последовательности в файле
В файле содержится последовательность целых чисел.
Её элементы могут принимать целые значения
от -100 000 до 100 000 включительно.
Определите количество троек последовательности,
в которых все числа одного знака,
при этом произведение минимального и максимального
элементов тройки больше квадрата минимального элемента
последовательности, который оканчивается на 15 и является трёхзначным числом.
В ответе запишите количество найденных троек чисел,
затем минимальное из произведений максимального
и минимального элементов таких троек.
В данной задаче под тройкой подразумевается
три идущих подряд элемента последовательности.
"""
f = open('1705.txt') # открываем файл
#print(f.readline()) # для проверки
a = [int(s) for s in f] # читаем файл построчно и добавляем в список
#print(a) # для проверки
"""
ПРОВЕРКА УСЛОВИЯ:
минимального элемента
последовательности, который оканчивается на 15
и является трёхзначным числом
"""
min15 = [] # список для минимальных элементов оканчивающихся на 15
for x in a:
if str(x)[-2:] == '15' and len(str(abs(x))) == 3:
# if abs(x) % 100 == 15: # другая проверка на оканчивание на 15
min15.append(x)
min15 = min(min15) # находим минимальный элемент в списке
print(min15) # для проверки
"""
ПРОВЕРКА УСЛОВИЯ:
все числа одного знака,
при этом произведение минимального и максимального
элементов тройки больше квадрата min15
"""
umn_tri = [] # список для произведений троек
for i in range(len(a) - 2):
if ((a[i] > 0 and a[i +1] > 0 and a[i +2] > 0)
or (a[i] < 0 and a[i +1] < 0 and a[i +2] < 0)) and \
max(a[i:i+3]) * min(a[i:i+3]) > min15 ** 2: # проверка что произведение тройки больше квадрата минимального элемента оканчивающегося на 15
umn_tri.append(max(a[i:i+3]) * min(a[i:i+3])) # доб произведения максимального и минимального элементов тройки
"""
ВЫВОДИМ ОТВЕТ: КОЛИЧЕСТВО ТРОЕК И МИНИМАЛЬНОЕ ПРОИЗВЕДЕНИЕ ТРОЕК
"""
print(len(umn_tri), min(umn_tri))