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

Файлы данных

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