Главная / 2 марта 2026 г.

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

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

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


def f(x, y, z):
    m = [x, y, z]
    k = 0
    for i in m:
        s = str(i)
        if s[0] == s[len(s) - 1]:
            k += 1
    if k == 1:
        return True
    else:
        return False


def z(x, y, z):
    m = [x, y, z]
    k = 0
    for i in m:
        if 999 < i < 10000 and i % 1000 // 100 == 2:
            k += 1
    if k == 2:
        return True
    else:
        return False


k = 0
s_max = 0
for i in range(len(a) - 2):
    if f(a[i], a[i + 1], a[i + 2]) and z(a[i], a[i + 1], a[i + 2]):
        k += 1
        s_max += max(a[i], a[i + 1], a[i + 2])
print(k, s_max)

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

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


def f(x, y):
    x = len(str(x))
    y = len(str(y))
    if (x == 2 and y != 2) or (x != 2 and y == 2):
        return True
    else:
        return False


min0 = 100000
k = 0
s_max = 0

for x in a:
    if 9 < x < 100 and x < min0:
        min0 = x

for i in range(len(a) - 1):
    if f(a[i], a[i + 1]) and (a[i] + a[i + 1]) % min0 == 0:
        k += 1
        s_max = max(a[i] + a[i + 1], s_max)

print(k, s_max)

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

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


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


max45 = -100000
for x in a:
    s = str(abs(x))
    if s[:2] == "45" and max45 < x:
        max45 = x

k = 0
min45 = 300000

for i in range(len(a) - 2):
    x, y, z = a[i], a[i + 1], a[i + 2]
    if znak(x, y, z) and (x + y + z) >= max45:
        k += 1
        if (x + y + z) % 100 == 45 and (x + y + z) < min45:
            min45 = x + y + z

print(x, min45)