В файле(dz17-30.txt) содержится последовательность целых чисел. Элементы последовательности – четырёхзначные натуральные числа. Найдите все тройки элементов последовательности, для которых пятеричная запись суммы разрядов чисел из тройки представляет собой палиндром, а среднее арифметическое всех чисел тройки больше, чем среднее арифметическое всех чисел в файле, кратных 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]
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)
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]
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