Главная / 20 февраля 2026 г.

№17. Обработки числовой последовательности

455) В файле 17-449.txt содержится последовательность целых чисел. Её элементы могут принимать целые значения от -100 000 до 100 000 включительно. Определите количество троек элементов последовательности, в которых ровно одно число не является отрицательным, а сумма элементов тройки не больше максимального элемента последовательности, в десятичной записи которого содержится 38. В ответе запишите количество найденных троек, затем максимальную из тех сумм элементов таких троек, десятичная запись которых начинается на 38. В данной задаче под тройкой подразумеваются три идущих подряд элемента последовательности.

Решение
def one_pol(x, y, z):
    mas = [x, y, z]
    k = 0
    for i in mas:
        if i >= 0:
            k += 1
        if k == 1:
            return True
        else:
            return False


def z38(n):
    s = str(n)
    if s.count("38") > 0:
        return True
    else:
        return False


def begin38(n):
    s = str(abs(n))
    if s[0:2] == "38":
        return True
    else:
        return False


with open("17-449.txt", "r") as f:
    a = [int(i) for i in f.readlines()]
    m38 = -100000
    k = 0
    max3 = -300000
for n in a:
    if z38(n) and n > m38:
        m38 = n
for i in range(len(a) - 3):
    if a[i] + a[i + 1] + a[i + 2] <= m38 and one_pol(a[i], a[i + 1], a[i + 2]):
        k+=1
        if begin38(a[i] + a[i + 1] + a[i + 2]) and a[i] + a[i + 1] + a[i + 2] > max3:
            max3 = a[i] + a[i + 1] + a[i + 2]
print(k, max3)

431) В файле 17-428.txt содержится последовательность натуральных чисел, не превышающих 100 000. Определите количество троек элементов последовательности, для которых выполняются следующие условия:

- в тройке есть трёхзначные числа;
- в тройке не более одного числа, у которого сумма цифр равна сумме цифр 13-го по счёту элемента последовательности, делящегося на 13;
- в тройке не менее двух чисел, у которых сумма цифр равна сумме цифр 25-го по счёту элемента последовательности, делящегося на 25.

В ответе запишите два числа: сначала количество найденных троек, затем среднее арифметическое сумм элементов этих троек, округленное до ближайшего меньшего целого числа. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

Решение
def sumZif(n):
    sum = 0
    while n > 0:
        sum += n % 10
        n //= 10
    return sum


def countF(x, y, z, Par):
    k = 0
    q = [x, y, z]
    for i in q:
        if sumZif(i) == sumZif(Par):
            k+=1
        return k


def f3(x, y, z):
    k = 0
    q = [x, y, z]
    for i in q:
        if 99 < abs(i) < 1000:
            k+=1
        return k


with open("17-428.txt", "r") as f:
    a = []
    l = 0
    n = 0
    while True:
        s = f.readline()
        if not s:
            break
        else:
            a.append(int(s))
            if int(s) % 13 == 0 and l < 13:
                a13 = int(s)
                l+=1
            if int(s) % 25 == 0 and n < 25:
                a25 = int(s)
                n += 1

k = 0
sum = 0
N = len(a)

for i in range(N-3):
    if f3(a[i], a[i + 1], a[i + 2])>0 and countF(a[i], a[i + 1], a[i + 2],a25) > 1:
        sum+=(a[i] + a[i + 1] + a[i + 2])
        k+=1

print(k, round(sum / k))

432) В файле 17-432.txt содержится последовательность целых чисел, не превышающих по модулю 100 000. Определите количество троек элементов последовательности, в которых произведение максимального и минимального элементов тройки больше суммы всех отрицательных элементов последовательности. В ответе запишите количество найденных троек, затем абсолютное значение максимальной из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

Подсказка
Решение
with open("17-432.txt", "r") as f:
    a = [int(i) for i in f.readlines()]
s = 0
k = 0
s = sum(x for x in a if x < 0)
max3 = -300000

for i in range(len(a) - 2):
    if max(a[i], a[i + 1], a[i + 2]) * min(a[i], a[i + 1], a[i + 2]) > s:
        k += 1
        if max3 < a[i] + a[i + 1] + a[i + 2]:
            max3 = a[i] + a[i + 1] + a[i + 2]

print(k, abs(max3))

433) (Открытый вариант-2025) В файле 17-433.txt содержится последовательность целых чисел, не превышающих по модулю 100 000. Определите количество троек последовательности, в которых все числа одного знака, при этом произведение минимального и максимального элементов тройки больше квадрата минимального элемента последовательности, который оканчивается на 15 и является трёхзначным числом. В ответе запишите количество найденных троек чисел, затем минимальное из произведений максимального и минимального элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

Решение
with open("17-433.txt", "r") as f:
    a = [int(i) for i in f.readlines()]


def z(x, y, z):
    m = [x, y, z]
    k = 0
    l = 0
    for i in m:
    if i > 0:
        k += 1
    if i < 0:
        l += 1
    if k == 3 or l == 3:
        return True
    else:
        return False


min0 = 100000
for x in a:
    if abs(x) % 100 == 15 and 99 < abs(x) < 1000 and min0 > x:
        min0 = x
k = 0
print(min0)

minp = 10000000000
for i in range(len(a) - 2):
    if z(a[i], a[i + 1], a[i + 2]) and max(a[i], a[i + 1], a[i + 2]) * min(a[i], a[i + 1], a[i + 2]) > min0 ** 2:
        k+=1
        if max(a[i], a[i + 1], a[i + 2]) * min(a[i], a[i + 1], a[i + 2]) < minp:
            minp = max(a[i], a[i + 1], a[i + 2]) * min(a[i], a[i + 1], a[i + 2])
print(k, minp)