Ctrl K

Суммы с шагом до конца массива

Сложная
Дан массив неотрицательных целых чисел values и список запросов queries, где queries[i] = [start, step]. Ответ на запрос — сумма элементов values[j] для всех индексов j от start до конца массива, у которых j - start делится на step. Иначе говоря, начинаем с start и шагаем вправо через step позиций, пока не выйдем за массив. Верните ответы на все запросы по порядку, каждый по модулю 10⁹ + 7. Запросов много, а шаги бывают маленькими — обход каждого запроса по отдельности может оказаться слишком долгим.
Пример 1
values=[4, 0, 7, 1, 9, 2], queries=[[0, 2], [1, 4], [3, 10]] → [20, 2, 1]

Запрос [0, 2] берёт индексы 0, 2, 4: 4 + 7 + 9 = 20. Запрос [1, 4] — индексы 1 и 5: 0 + 2 = 2. Запрос [3, 10] — только индекс 3: 1.

Пример 2
values=[1000000000, 1000000000, 1000000000], queries=[[0, 1]] → [999999986]

Сумма равна 3 000 000 000, по модулю 10⁹ + 7 это 999 999 986.

Ограничения
  • 1 ≤ len(values) ≤ 5·10⁴
  • 0 ≤ values[i] ≤ 10⁹
  • 1 ≤ len(queries) ≤ 1.5·10⁵
  • 0 ≤ start < len(values)
  • 1 ≤ step ≤ 5·10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВода между стенами СложнаяСамый большой горящий блок СложнаяПрибыль за две сделки СложнаяВсе способы расставить пробелы СложнаяПереход через пещеру Сложная
загружаем Python…
Вход
values=[4, 0, 7, 1, 9, 2], queries=[[0, 2], [1, 4], [3, 10]]
Ожидается
[20, 2, 1]

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