Файл содержит последовательность натуральных чисел, не превышающих 100 000. Назовём тройкой три идущих подряд элемента последовательности.
Определите количество троек, для которых выполняются следующие условия:
— ровно два числа в тройке четырёхзначные;
— хотя бы одно число в тройке делится
— сумма элементов тройки больше максимального элемента последовательности, запись которого заканчивается
В ответе запишите два числа: сначала количество найденных троек, затем максимальную величину суммы элементов этих троек.
Ответ:
Приведём решение на языке Python.
f = open('17.txt')
s = f.readlines()
for i in range(len(s)):
s[i] = int(s[i])
count = 0
maxi = 0
maxsum = 0
for i in range(len(s)):
if abs(s[i]) % 100 == 17:
maxi = max(maxi, s[i])
for i in range(2, len(s)):
k1 = 0
k2 = 0
k3 = 0
c1 = abs(s[i-2])
c2 = abs(s[i-1])
c3 = abs(s[i])
while c1 > 0:
k1 += 1
c1 //= 10
while c2 > 0:
k2 += 1
c2 //= 10
while c3 > 0:
k3 += 1
c3 //= 10
if (k1 == 4 and k2 == 4 and k3 != 4) or (k1 == 4 and k2 != 4 and k3 == 4) or (k1 != 4 and k2 == 4 and k3 == 4):
if s[i] % 5 == 0 or s[i-1] % 5 == 0 or s[i-2] % 5 == 0:
if s[i-2] + s[i-1] + s[i] > maxi:
count += 1
maxsum = max(maxsum, s[i-2] + s[i-1] + s[i])
print(count, maxsum)
В результате работы данного алгоритма при вводе данных из файла ответ — 21 114132.
Ответ: 21 114132.
Приведём решение Ильи Андрианова на языке Python.
M = [int(x) for x in open('17.txt')]
A = [x for x in M if abs(x) % 100 == 17]
count = 0
maxi = -9999999999
for i in range(len(M)-2):
x, y, z = M[i], M[i+1], M[i+2]
if len([i for i in [x, y, z] if len(str(abs(i))) == 4]) == 2:
if any(i % 5 == 0 for i in [x, y, z]):
if (x + y + z) > max(A):
count += 1
maxi = max(maxi, x + y + z)
print(count, maxi)
Приведём решение Юрия Красильникова на языке Python.
a = [int(s) for s in open('17.txt')]
me17 = max([x for x in a if x % 100 == 17])
b = [a[i:i+3] for i in range(len(a)-2)]
c = [sum(x) for x in b if sum([1000 <= n < 10000 for n in x]) == 2 and sum([n % 5 == 0 for n in x]) > 0 and sum(x) > me17]
print(len(c),max(c))
Приведём решение Михаила Глинского на языке Python.
f = open('17.txt')
m = [int(x) for x in f]
maxi17 = count = maxisum = 0
for i in range(len(m)):
if m[i]%17 == 0: maxi17 = max(maxi17,m[i])
for i in range(len(m)-2):
k4 = 0
if len(str(m[i]))==4: k4 += 1
if len(str(m[i+1]))==4: k4 += 1
if len(str(m[i+2]))==4: k4 += 1
if k4==2 and (m[i]%5==0 or m[i+1]%5==0 or m[i+2]%5==0):
if m[i]+m[i+1]+m[i+2] > maxi17:
maxisum = max(m[i]+m[i+1]+m[i+2],maxisum)
count+=1
print(count,maxisum)

