Код Senior Префиксные суммы обновлено

Подмассивы, делящиеся на K

Условие

Сколько непрерывных подмассивов имеют сумму, кратную k.

Примеры

subarraysDivByK([4, 5, 0, -2, -3, 1], 5) // 7
subarraysDivByK([5], 9) // 0
subarraysDivByK([-1, 2, 9], 2) // 2

Как подойти

Ключ не сама сумма, а её остаток: если pre[j] и pre[i] дают одинаковый остаток, разность делится на k. Идиома ((x % k) + k) % k обязательна - без неё отрицательные числа ломают группировку.

Подсказки: 2
  1. Две префиксные суммы с одинаковым остатком дают кратный отрезок.
  2. Остаток в JS может быть отрицательным - нормализуй.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.