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

17.01 Обработка пар элементов последовательности

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

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

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

В файле 10.txt содержится последовательность из 10000 целых положительных чисел. Каждое число не превышает 10000. Определите и запишите в ответе сначала количество пар элементов последовательности, разность которых четна и хотя бы одно из чисел делится на 11, затем, через пробел, минимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два различных элемента последовательности. Порядок элементов в паре не важен.

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

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

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

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

# переменная для подсчёта количества подходящих пар
k = 0

# переменная для хранения минимальной суммы подходящих пар (берём достаточно большое число)
mn = 10000

# перебираем все пары различных элементов (i < j)
for i in range(len(a)):
    for j in range(i + 1, len(a)):
        # проверяем два условия:
        # 1) разность элементов чётна
        # 2) хотя бы одно число делится на 11
        if ((a[i] - a[j]) % 2 == 0) and (a[i] % 11 == 0 or a[j] % 11 == 0):
            k += 1
            # обновляем минимальную сумму, если нашли меньшее значение
            mn = min(mn, a[i] + a[j])

# выводим количество подходящих пар и минимальную сумму
print(k, mn)

Ответ: 4182668 18

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

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

В файле содержится последовательность из 5000 положительных целых чисел. Каждое число не превышает 10000. Определите и запишите в ответе через пробел сначала количество пар элементов последовательности, у которых абсолютная разность элементов кратна 45 и хотя бы один из элементов кратен 18, затем максимальную из абсолютных разностей элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

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

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

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

# открываем файл с числами
f = open("17_1.txt")

# считываем все строки из файла и преобразуем в список целых чисел
a = [int(i) for i in f]

# создаём пустой список для хранения абсолютных разностей подходящих пар
ans = []

# перебираем все соседние пары элементов
for i in range(len(a) - 1):
    # вычисляем абсолютную разность и проверяем два условия:
    # 1) разность кратна 45
    # 2) хотя бы один элемент кратен 18
    if (abs(a[i] - a[i+1]) % 45 == 0) and (a[i] % 18 == 0 or a[i+1] % 18 == 0):
        # добавляем абсолютную разность в список подходящих
        ans += [abs(a[i] - a[i+1])]

# выводим количество подходящих пар и максимальную абсолютную разность среди них
print(len(ans), max(ans))

Ответ: 10 8640

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

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

В файле содержится последовательность из 10000 целых положительных чисел. Каждое число не превышает 10000. Определите и запишите в ответе через пробел сначала количество пар элементов последовательности, у которых сумма чётна, а произведение делится на 17, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два различных элемента последовательности. Порядок элементов в паре не важен.

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

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

Напишем программу, которая будет проверять все пары различных элементов из файла (не обязательно соседние), подсчитывая те, у которых сумма чётна, а произведение делится на 17. Для проверки первого условия будем находить сумму пары и проверять остаток от деления суммы на 2. Если остаток равен 0, сумма чётна. Для проверки второго условия будем находить произведение элементов пары и проверять остаток от деления на 17. Если остаток равен 0, произведение кратно 17. Количество таких пар и максимальную сумму будем сохранять в отдельный список, чтобы после завершения перебора вывести общее количество и максимальную сумму.

# открываем файл с числами
f = open("17_2.txt")

# считываем все строки из файла и преобразуем в список целых чисел
a = [int(i) for i in f]

# создаём пустой список для хранения сумм подходящих пар
ans = []

# перебираем все пары различных элементов (i < j)
for i in range(len(a) - 1):
    for j in range(i + 1, len(a)):
        # проверяем два условия:
        # 1) сумма пары чётна
        # 2) произведение пары делится на 17
        if (a[i] + a[j]) % 2 == 0 and (a[i] * a[j]) % 17 == 0:
            # добавляем сумму пары в список подходящих
            ans += [a[i] + a[j]]

# выводим количество подходящих пар и максимальную сумму среди них
print(len(ans), max(ans))

Ответ: 2909868 19974

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

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

Файл содержит последовательность неотрицательных целых чисел, не превышающих 10 000. Назовём парой два идущих подряд элемента последовательности. Определите количество пар, в которых хотя бы один из двух элементов делится на 10, а их сумма делится на 21. В ответе запишите два числа через пробел: сначала количество найденных пар, а затем — максимальную сумму элементов таких пар.

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

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

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

# открываем файл с числами
f = open("17_3.txt")

# считываем все строки из файла и преобразуем в список целых чисел
a = [int(i) for i in f]

# создаём пустой список для хранения сумм подходящих пар
ans = []

# перебираем все соседние пары элементов
for i in range(len(a) - 1):
    # проверяем два условия:
    # 1) хотя бы один элемент пары делится на 10
    # 2) сумма пары делится на 21
    if (a[i] + a[i+1]) % 21 == 0 and (a[i] % 10 == 0 or a[i+1] % 10 == 0):
        # добавляем сумму пары в список подходящих
        ans += [a[i] + a[i+1]]

# выводим количество подходящих пар и максимальную сумму среди них
print(len(ans), max(ans))

Ответ: 59 17409

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

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

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

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

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

Напишем программу, которая будет проверять все пары соседних чисел из файла, подсчитывая те, где хотя бы один элемент меньше минимального числа в последовательности, которое делится на 22, и произведение элементов делится на 14. Для проверки первого условия будем находить минимальное число в последовательности, делящееся на 22, и сравнивать каждый элемент пары с этим значением. Если хотя бы один элемент меньше найденного минимума, то условие выполняется. Для проверки второго условия будем находить произведение элементов пары и проверять остаток от деления на 14. Если остаток равен 0, то произведение кратно 14. Количество таких пар и максимальную сумму среди них будем сохранять в отдельные переменные, чтобы после завершения цикла вывести общее количество и наибольшую сумму.

# открываем файл с числами
f = open("17_5.txt")

# считываем все строки из файла и преобразуем в список целых чисел
a = [int(i) for i in f]

# находим минимальный элемент последовательности, который кратен 22
mn22 = min([i for i in a if i % 22 == 0])

# создаём пустой список для хранения сумм подходящих пар
ans = []

# перебираем все соседние пары элементов
for i in range(len(a) - 1):
    # проверяем два условия:
    # 1) хотя бы один элемент пары меньше mn22
    # 2) произведение пары делится на 14
    if (a[i] < mn22 or a[i+1] < mn22) and (a[i] * a[i+1]) % 14 == 0:
        # добавляем сумму пары в список подходящих
        ans += [a[i] + a[i+1]]

# выводим количество подходящих пар и максимальную сумму среди них
print(len(ans), max(ans))

Ответ: 8 7913

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

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

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

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

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

Напишем программу, которая будет проверять все пары соседних чисел из файла. Нас будут интересовать только те пары, где: – хотя бы одно число делится на минимальный элемент последовательности, который сам делится на 16; – сумма двух чисел делится на 6. Если оба условия выполняются, пара считается подходящей. Суммы таких пар будем сохранять в отдельный список. После завершения перебора программа выведет количество подходящих пар и наименьшую сумму среди них.

# открываем файл с числами
f = open("17_6.txt")

# считываем все строки из файла и преобразуем в список целых чисел
a = [int(i) for i in f]

# находим минимальный элемент последовательности, который кратен 16
mn16 = min(i for i in a if i % 16 == 0)

# создаём пустой список для хранения сумм подходящих пар
ans = []

# перебираем все соседние пары элементов
for i in range(len(a) - 1):
    # проверяем два условия:
    # 1) хотя бы одно число делится на mn16
    # 2) сумма двух чисел делится на 6
    if (a[i] % mn16 == 0 or a[i+1] % mn16 == 0) and (a[i] + a[i+1]) % 6 == 0:
        # добавляем сумму пары в список подходящих
        ans += [a[i] + a[i+1]]

# выводим количество подходящих пар и минимальную сумму среди них
print(len(ans), min(ans))


Ответ: 3 9936

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

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

В файле содержится последовательность из 10000 целых положительных чисел. Каждое число не превышает 10000. Определите и запишите в ответе через пробел сначала количество пар элементов последовательности, произведение которых четно и хотя бы одно из чисел делится на 13, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два различных элемента последовательности. Порядок элементов в паре не важен.

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

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

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

# открываем файл с числами
f = open(’17_7.txt’)

# считываем все строки из файла и преобразуем в список целых чисел
a = [int(i) for i in f]

# создаём пустой список для хранения сумм подходящих пар
ans = []

# перебираем все возможные пары элементов (i < j)
for i in range(len(a) - 1):
    for j in range(i + 1, len(a)):
        # проверяем, что произведение пары чётное (хотя бы одно из чисел чётное)
        # и хотя бы одно из чисел делится на 13
        if (a[i] * a[j]) % 2 == 0 and (a[i] % 13 == 0 or a[j] % 13 == 0):
            # добавляем сумму этой пары в список подходящих
            ans += [a[i] + a[j]]

# выводим количество подходящих пар и максимальную сумму среди них
print(len(ans), max(ans))

Ответ: 5495352 19971

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

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

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

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

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

Напишем программу, которая будет проверять все пары соседних чисел из файла, отбирая те, где сумма кратна 35 и ровно одно число нечётное. Для проверки первого условия будем находить остаток от деления на 35 суммы и сравнивать его с 0, если остаток равен 0, то сумма кратна 35. Для проверки второго условия будем сравнивать остатки от деления на 2 чисел пары, если они разные, то одно число четное, а другое нечетное, если одинаковые, то оба числа или четные или нечетные. Подходящие пары будем сохранять в отдельный список, чтобы после отработки цикла вывести их количество и минимальную сумму.

# Открываем файл ’17_L1.txt’ для чтения
f = open(’17_L1.txt’)
# Считываем все строки из файла и преобразуем их в целые числа, сохраняя в список ’a’
a = [int(i) for i in f]
# Создаем пустой список ’ans’ для хранения сумм подходящих пар
ans = []

# Перебираем все пары последовательных элементов списка ’a’
for i in range(len(a) - 1):
    # Проверяем, что сумма текущего и следующего элемента кратна 35
    # И ровно один из элементов пары нечётный (проверка через сравнение остатков от деления на 2)
    if (a[i] + a[i + 1]) % 35 == 0 and (a[i] % 2 != a[i + 1] % 2):
        # Если условия выполнены, добавляем сумму пары в список ’ans’
        ans += [a[i] + a[i + 1]]
print(len(ans), min(ans))

Ответ: 142 9415

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

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

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

Показать ответ и решение

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

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

# Открываем файл и считываем все числа
f = open("17.txt")
s = [int(x) for x in f]

# Находим максимальное число в списке, кратное 3
mx = max([x for x in s if x % 3 == 0])

# Счётчик подходящих пар
count = 0
# Максимальная сумма подходящих пар
ans = -10 ** 20

# Перебираем все пары подряд идущих элементов
for i in range(len(s) - 1):
    # Проверяем оба условия: одно из чисел делится на 3 и сумма чисел не более максимального,
    # кратного 3
    if ((s[i] % 3 == 0) or (s[i+1] % 3 == 0)) and ((s[i] + s[i+1]) <= mx):
        count += 1
        ans = max(ans, s[i] + s[i + 1])

# Выводим ответ
print(count, ans)

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