Последовательность натуральных чисел характеризуется числом X и Y, где X – максимальная сумма цепочки, кратная 17, а Y – максимальная сумма цепочки, кратная 6. Гарантируется, что обе суммы в последовательности есть. Если существует несколько подпоследовательностей с равной максимальной суммой, нужно выбрать последовательность, которая заканчивается раньше т.е. последний элемент имеет меньший индекс. Цепочкой называется подпоследовательность символов, идущих подряд в исходной последовательности. Найдите X, Y, сумму X и Y.
В качестве ответа укажите суммы ответов файла А и файла B.
f = open(’fileA.txt’)
n = int(f.readline())
minsx = [10e16] * 17
minsx[0] = 0
minsy = [10e16] * 6
minsy[0] = 0
summ, maximx, maximy = 0, 0, 0
for i in range(n):
x = int(f.readline())
summ += x
ostx = summ % 17
osty = summ % 6
if summ — minsx[ostx] > maximx:
maximx = summ — minsx[ostx]
if summ < minsx[ostx]:
minsx[ostx] = summ
if summ — minsy[osty] > maximy:
maximy = summ — minsy[osty]
if summ < minsy[osty]:
minsy[osty] = summ
print(maximx, maximy, maximx + maximy)
n = int(f.readline())
minsx = [10e16] * 17
minsx[0] = 0
minsy = [10e16] * 6
minsy[0] = 0
summ, maximx, maximy = 0, 0, 0
for i in range(n):
x = int(f.readline())
summ += x
ostx = summ % 17
osty = summ % 6
if summ — minsx[ostx] > maximx:
maximx = summ — minsx[ostx]
if summ < minsx[ostx]:
minsx[ostx] = summ
if summ — minsy[osty] > maximy:
maximy = summ — minsy[osty]
if summ < minsy[osty]:
minsy[osty] = summ
print(maximx, maximy, maximx + maximy)
Ответ: 30013820946