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

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

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

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

Задача 1#29822

В файле(dz17-30.txt) содержится последовательность целых чисел. Элементы последовательности – четырёхзначные натуральные числа. Найдите все тройки элементов последовательности, для которых пятеричная запись суммы разрядов чисел из тройки представляет собой палиндром, а среднее арифметическое всех чисел тройки больше, чем среднее арифметическое всех чисел в файле, кратных 31. В ответе запишите количество найденных троек, затем, через пробел, минимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

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

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

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

# Перевод в пятеричную систему
def cc_5(n):
    q = ’’
    k = n
    while k > 0:
        q = str(k % 5) + q
        k //= 5
    return q

# Сумма цифр числа
def summa_ch(n):
    summa = 0
    k = n
    while k > 0:
        summa += (k % 10)
        k //= 10
    return summa

# Чтение чисел из файла
f = open(’dz17-30.txt’)
s = [int(_) for _ in f]

# Подсчёт среднего арифметического для кратных 31
counter_31 = 0
summa_31 = 0
for i in range(len(s)):
    if s[i] % 31 == 0:
        counter_31 += 1
        summa_31 += s[i]
sr_31 = summa_31 / counter_31

# Поиск подходящих троек
ans = 0
minim = 10 ** 10
for i in range(len(s) - 2):
    # Среднее арифметическое тройки
    sr = (s[i] + s[i + 1] + s[i + 2]) / 3
    if sr > sr_31:
                                                                                                     
                                                                                                     
        # Сумма всех цифр в тройке
        summa = summa_ch(s[i]) + summa_ch(s[i + 1]) + summa_ch(s[i + 2])
        # Перевод в пятеричную систему
        summa = cc_5(summa)
        # Проверка на палиндром
        if summa == summa[::-1]:
            ans += 1
            minim = min(minim, s[i] + s[i + 1] + s[i + 2])

# Вывод результата
print(ans, minim)

Ответ: 9188 16799

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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