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

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

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

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

Задача 1#57110

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

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

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

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

# Функция проверяет, что все цифры числа чётные
def all_even(number):
    s = str(number)                   # Преобразуем число в строку, чтобы перебрать каждую цифру
    for char in s:
        if int(char) % 2 != 0:       # Если найдена хоть одна нечётная цифра, возвращаем False
            return False
    return True                      # Если все цифры чётные, возвращаем True

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

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

# Перебираем все пары соседних элементов последовательности
for i in range(len(arr) - 1):
    # Проверяем, что оба числа в паре состоят только из чётных цифр
    if all_even(arr[i]) and all_even(arr[i + 1]):
        counter += 1                           # Увеличиваем счётчик подходящих пар
        # Обновляем минимальную сумму, если текущая сумма пары меньше уже сохранённой
        min_sum = min(min_sum, arr[i] + arr[i + 1])

# Выводим количество найденных пар и минимальную сумму среди них
print(counter, min_sum)

Ответ: 31 4890

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

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

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

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