Сохранить массив префиксной суммы по модулю n
, давайте назовем этот массив pref_sum []
pref_sum[i]
будет содержать сумму A[j]
по модулю n
, где 0 <= j <= i
Сумма подмассива [i, j]
делится на n
, если pref_sum[i] - pref_sum[j - 1] modulo n = 0
.
Так что для i
с pref_sum[i] = x
мы должны найти j, где pref_sum[j - 1] = x
.
Его можно найти в O (1), если мы сохраним его в хеш-таблице или простом массиве.