Ctrl K

Отрезки с суммой, кратной числу

Средняя
Дан массив целых чисел values (среди них могут быть отрицательные и нули) и число divisor. Отрезок — это непустая последовательность подряд идущих элементов. Посчитайте, у скольких отрезков сумма элементов делится на divisor без остатка. Отрезки на разных позициях считаются разными, даже если их значения совпадают. Перебор всех отрезков даёт O(n²); попробуйте найти решение за O(n).
Пример 1
values=[3, -1, 4, 2], divisor=3 → 4

На 3 делятся суммы четырёх отрезков: [3] = 3, [-1, 4] = 3, [4, 2] = 6 и [3, -1, 4] = 6.

Пример 2
values=[5], divisor=2 → 0

Единственный отрезок имеет сумму 5, а она нечётная.

Пример 3
values=[0, 0], divisor=7 → 3

Ноль делится на что угодно, поэтому подходят все три отрезка: [0], [0] и [0, 0].

Ограничения
  • 1 ≤ len(values) ≤ 3·10⁴
  • -10⁴ ≤ values[i] ≤ 10⁴
  • 2 ≤ divisor ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный отрезок с заданной суммой СредняяОтрезок с суммой, кратной делителю СредняяПоровну орлов и решек СредняяОтрезки с заданной суммой СредняяОкна с заданным числом тревог Средняя
загружаем Python…
Вход
values=[3, -1, 4, 2], divisor=3
Ожидается
4

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 109 тестов на сервере, включая скрытые.