Escrito por Leonardo Paes
Conhecimento prévio necessário:
A ideia principal para resolvermos esse problema é que a soma de valores de um intervalo (subvetor) é a subtração de duas somas de prefixos do vetor original. Por exemplo: Dado o subvetor com índices de a a sua soma é , onde é o vetor das somas de prefixos.
Ao fixarmos o , o final de um certo subvetor, basicamente queremos saber a quantidade de tal que e , e isso é o mesmo que: .
Para encontrarmos essa quantidade de para cada , basta utilizarmos um de frequências, que diz a quantidade de prefixos anteriores a com soma congruente a um certo valor módulo .
Confira o código abaixo para melhor entendimento: