Максимальная подпоследовательность длиной не менее L элементов, сумма которых кратна K
Я не знаю как находить подотрезки длиной l. Я иду по отрезку, нахожу число, которое со всеми элементами до имеют длину подотрезка больше l. Соответственно, я могу вычесть подотрезок, сумма элементов которого кратна k и который имеет длину, вычитая которую получу подотрезок с количеством элементов не менее k. Но, кажется, это не особо работает. Интересует реализация. Писать я начала следующее:
def subarray():
n = int(input())
l = int(input())
k = int(input())
c = [10**9] * k
sum = 0
for i in range(n):
s = int(input())
sum += s
if sum % k == 0 and
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
m = sum % k
if c[m] == 10**9:
c[m] = i #запомнили индекс, на котором впервые встретилось данное значение
else:
llen = i - c[m]
if llen >= L:
maxlen = max(maxlen, llen)