17.02 Обработка троек элементов последовательности
Ошибка.
Попробуйте повторить позже
В файле(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)
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

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

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

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

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

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!