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

17.03 Прочие прототипы

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка числовой последовательности
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#29807Максимум баллов за задание: 1

В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 0  до 100  000  включительно. Рассматривается множество элементов последовательности, больших 100  , в которых цифра в разряде десятков не превышает 4  , а цифра в разряде сотен принадлежит отрезку [3  ; 7  ].

Найдите количество таких чисел и минимальное из них.

Вложения к задаче
Показать ответ и решение

Решение программой

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

Далее проверяем две цифры: цифру в разряде десятков (второй справа символ строки) и цифру в разряде сотен (третий справа символ). Десятки должны быть не больше 4, а сотни — лежать в диапазоне от 3 до 7 включительно. Если оба условия выполняются, учитываем число — увеличиваем счётчик и обновляем минимальное найденное число.

В конце выводим количество таких чисел и минимальное из них.

# Открываем файл и считываем числа в список
f = open(’dz17-15.txt’)
s = [int(_) for _ in f]

# Инициализируем счётчик подходящих чисел
counter = 0
# Инициализируем переменную для минимального числа
minim = 10 ** 10

# Перебираем все числа последовательности
for i in range(len(s)):
    # Проверяем, что число больше 100
    if s[i] > 100:
        # Преобразуем число в строку для проверки цифр
        k = str(s[i])
        # Проверяем цифру в разряде десятков и сотен
        if int(k[-2]) <= 4 and int(k[-3]) in [3, 4, 5, 6, 7]:
            # Увеличиваем счётчик подходящих чисел
            counter += 1
            # Обновляем минимальное число
            minim = min(minim, s[i])

# Выводим количество подходящих чисел и минимальное из них
print(counter, minim)

Ответ: 2603 302

Ошибка.
Попробуйте повторить позже

Задача 2#29821Максимум баллов за задание: 1

В файле(dz17-29.txt) содержится последовательность целых чисел. Элементы последовательности могут принимать значения от 0 до 10 000 включительно. Необходимо найти минимальный кратный 7 и минимальный кратный 13 элемент последовательности. Если минимальный кратный 7 больше минимального кратного 13, то программа должна вывести количество кратных 7, а также максимальный из них. В противном случае программа должна вывести количество кратных 13, а также максимальный из них.

Вложения к задаче
Показать ответ и решение

Решение программой

Сначала читаем последовательность чисел из файла. Задача состоит в сравнении двух минимальных значений: минимального элемента, кратного 7, и минимального элемента, кратного 13. Также считаем количество и находим максимум среди чисел, кратных 7 и кратных 13. Затем сравниваем два минимума: если минимальный кратный 7 больше минимального кратного 13, то выводим количество и максимум среди кратных 7. Иначе — количество и максимум среди кратных 13.

# Открываем файл и читаем все числа
f = open(’dz17-29.txt’)
s = [int(_) for _ in f]

# Счётчики кратных 7 и 13
counter_7 = 0
counter_13 = 0

# Инициализация минимумов и максимумов
min_7 = 10 ** 10
min_13 = 10 ** 10
max_7 = -10 ** 10
max_13 = -10 ** 10

# Проходим по всем числам
for i in range(len(s)):
    # Если кратно 7
    if s[i] % 7 == 0:
        counter_7 += 1
        min_7 = min(min_7, s[i])
        max_7 = max(max_7, s[i])
    # Если кратно 13
    if s[i] % 13 == 0:
        counter_13 += 1
        min_13 = min(min_13, s[i])
        max_13 = max(max_13, s[i])

# Сравниваем минимальные значения и выводим ответ
if min_7 > min_13:
    print(counter_7, max_7)
else:
    print(counter_13, max_13)

Ответ: 7722 9997

Ошибка.
Попробуйте повторить позже

Задача 3#58489Максимум баллов за задание: 1

В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от -10 000 до 10 000 включительно. Определите и запишите в ответе через пробел сначала количество локальных минимумов в этой последовательности, затем максимальный среди этих элементов. Под локальным минимумом подразумевается элемент последовательности, меньший двух соседних элементов. Гарантируется наличие хотя бы двух локальных минимумов.

Вложения к задаче
Показать ответ и решение

Решение программой

В задаче требуется найти локальные минимумы в последовательности — это такие элементы, которые строго меньше своих соседей слева и справа. Мы перебираем все элементы, кроме первого и последнего, поскольку у крайних элементов нет двух соседей. Для каждого элемента проверяем, меньше ли он соседних элементов. Если да, увеличиваем счётчик найденных локальных минимумов и обновляем максимальное значение среди них, сравнивая текущий локальный минимум с уже сохранённым максимумом. В итоге выводим количество таких элементов и наибольшее значение среди них.

# Открываем файл и считываем последовательность чисел в список
file = open("17.txt")
arr = [int(_) for _ in file]

count_local_min = 0        # Счётчик локальных минимумов
max_local_min = -10 ** 5   # Инициализируем переменную для максимума среди локальных минимумов достаточно маленьким числом

# Проходим по элементам с 1 до предпоследнего индекса (не включая крайние)
for i in range(1, len(arr) - 1):
    # Проверяем, что текущий элемент меньше соседних слева и справа
    if arr[i] < arr[i - 1] and arr[i] < arr[i + 1]:
        count_local_min += 1                # Увеличиваем счётчик
        max_local_min = max(max_local_min, arr[i])  # Обновляем максимум среди локальных минимумов

print(count_local_min, max_local_min)

Ответ: 3316 8125

Ошибка.
Попробуйте повторить позже

Задача 4#58490Максимум баллов за задание: 1

В файле 2.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 0 до 10 000 включительно. Рассматривается такие элементы последовательности, которые делятся на 3 и не делятся на 7, 17, 19, 27. Найдите количество таких чисел и максимальное из них.

Вложения к задаче
Показать ответ и решение

Решение программой

Напишем программу, которая проходит по всем числам из файла и отбирает те, которые делятся на 3, но при этом не делятся на 7, 17, 19 и 27. Для проверки делимости используем оператор остатка от деления (

# открываем файл и считываем числа в список
file = open("17.txt")
arr = [int(_) for _ in file]

counter = 0  # счетчик подходящих чисел
max_elem = 0  # максимальное подходящее число

# перебираем все числа
for elem in arr:
    # проверяем делимость на 3 и неделимость на 7, 17, 19, 27
    if elem % 3 == 0 and elem % 7 != 0 and elem % 17 != 0 and \
       elem % 19 != 0 and elem % 27 != 0:
        counter += 1  # увеличиваем счетчик
        max_elem = max(max_elem, elem)  # обновляем максимум

# выводим количество и максимальное число
print(counter, max_elem)

Ответ: 445 9738

Ошибка.
Попробуйте повторить позже

Задача 5#61226Максимум баллов за задание: 1

В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые положительные значения до 10 000 включительно. Необходимо найти количество элементов последовательности, кратных 56, и количество кратных 89. Если количество кратных 56 больше, чем количество кратных 89, то программа должна вывести количество кратных 56, а также минимальный из них. В противном случае программа должна вывести количество кратных 89, а также максимальный из них. Числа в ответе запишите через пробел.

Вложения к задаче
Показать ответ и решение

Решение программой

Напишем программу, которая будет проходить по всем числам из файла и считать количество элементов, кратных 56 и кратных 89. Одновременно будем отслеживать минимальное число, кратное 56, и максимальное число, кратное 89. После прохода по списку сравним количества кратных 56 и кратных 89. Если количество кратных 56 больше, то выведем количество кратных 56 и минимальное из них, в противном случае — количество кратных 89 и максимальное из них.

# считываем все числа из файла в список
f = open("17_6.txt")
a = [int(i) for i in f]

# счётчики количества элементов кратных 56 и 89
c56 = 0
c89 = 0

# переменные для минимального числа кратного 56 и максимального числа кратного 89
mn56 = 10**10
mx89 = -10**9

# перебираем все числа
for i in range(len(a)):
    if a[i] % 56 == 0:
        # если число кратно 56, увеличиваем счётчик и обновляем минимальное число кратное 56
        c56 += 1
        mn56 = min(mn56, a[i])
    if a[i] % 89 == 0:
        # если число кратно 89, увеличиваем счётчик и обновляем максимальное число кратное 89
        c89 += 1
        mx89 = max(mx89, a[i])

# сравниваем количества и выводим результат согласно условию
if c56 > c89:
    print(c56, mn56)
else:
    print(c89, mx89)

Ответ: 18 280

Ошибка.
Попробуйте повторить позже

Задача 6#61227Максимум баллов за задание: 1

В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые положительные значения до 10 000 включительно. Необходимо найти минимальный чётный и минимальный нечётный элемент последовательности. Если минимальный чётный больше минимального нечётного, то программа должна вывести количество чётных, а также максимальный из них. В противном случае программа должна вывести количество нечётных, а также максимальный из них. Числа в ответе запишите через пробел.

Вложения к задаче
Показать ответ и решение

Решение программой

Напишем программу, которая будет проходить по всем числам из файла и находить минимальные чётные и нечётные элементы, а также подсчитывать количество и максимумы для каждой из этих групп. Для этого создадим счётчики для количества чётных и нечётных чисел, переменные для минимальных и максимальных значений в каждой группе. Перебирая все числа, будем обновлять эти значения в зависимости от чётности числа. После прохода по списку сравним минимальный чётный и минимальный нечётный элементы. Если минимальный чётный больше минимального нечётного, то выведем количество чётных чисел и максимальное чётное число, иначе — количество нечётных чисел и максимальное нечётное число.

# считываем все числа из файла в список
f = open("17_7.txt")
a = [int(i) for i in f]

# счётчики количества чётных и нечётных чисел
cc = 0  # количество чётных
cn = 0  # количество нечётных

# переменные для минимальных значений — инициализируем большими числами
mnc = 10**10  # минимальный чётный
mnn = 10**10  # минимальный нечётный

# переменные для максимальных значений — инициализируем маленькими числами
mxc = -10**9  # максимальный чётный
mxn = -10**9  # максимальный нечётный

# перебираем все числа
for i in range(len(a)):
    if a[i] % 2 == 0:
        # если число чётное, увеличиваем счётчик чётных, обновляем минимальный и максимальный чётные
        cc += 1
        mnc = min(mnc, a[i])
        mxc = max(mxc, a[i])
    else:
        # если число нечётное, увеличиваем счётчик нечётных, обновляем минимальный и максимальный нечётные
        cn += 1
        mnn = min(mnn, a[i])
        mxn = max(mxn, a[i])

# сравниваем минимальные значения и выводим результат согласно условию
if mnc > mnn:
    print(cc, mxc)
else:
    print(cn, mxn)

Ответ: 507 9842

Ошибка.
Попробуйте повторить позже

Задача 7#61228Максимум баллов за задание: 1

В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 0 до 10 000 включительно. Рассматривается множество элементов последовательности, которые при делении на 16 дают остаток 3, при этом не делятся ни на 4, ни на 64. Найдите и запишите в ответе через пробел разность наибольшего и наименьшего из таких чисел и их количество.

Вложения к задаче
Показать ответ и решение

Решение программой

Напишем программу, которая будет проходить по всем числам из файла и отбирать те, которые при делении на 16 дают остаток 3, при этом не делятся на 4 и не делятся на 64. Для этого пройдём по списку чисел, проверяя каждое число на выполнение трёх условий: остаток от деления на 16 равен 3, остаток от деления на 4 не равен 0 (то есть число не делится на 4), и остаток от деления на 64 не равен 0 (число не делится на 64). Все числа, подходящие под эти условия, добавим в отдельный список. После окончания перебора найдём разность между максимальным и минимальным числом из этого списка и посчитаем количество таких чисел. В ответ выведем сначала разность, затем количество таких чисел.

# считываем все числа из файла в список
f = open("17_8.txt")
a = [int(i) for i in f]

# создаём список для чисел, подходящих под условия
nums = []

# перебираем все числа
for i in range(len(a)):
    # проверяем три условия одновременно:
    # 1) остаток от деления на 16 равен 3
    # 2) число не делится на 4 (остаток от деления на 4 не равен 0)
    # 3) число не делится на 64 (остаток от деления на 64 не равен 0)
    if a[i] % 16 == 3 and a[i] % 4 != 0 and a[i] % 64 != 0:
        nums.append(a[i])

# выводим разницу между максимальным и минимальным числом из списка и количество таких чисел
print(max(nums) - min(nums), len(nums))

Ответ: 384 50
Рулетка
Вы можете получить скидку в рулетке!