Pagini recente » Cod sursa (job #2124161) | Cod sursa (job #1128321) | Cod sursa (job #837444) | Cod sursa (job #1516545) | Cod sursa (job #2415128)
#include <bits/stdc++.h>
using namespace std;
using ll = int64_t;
const int MAXN = 5e5, MAXK = 1e5;
int car[1 + MAXK];
ll s[1 + MAXN];
int v[1 + MAXN];
int n, k;
ll solve (int l) {
int i;
ll sol = 0;
if (l == 0)
return 0;
for (i = 0; i < k; i++)
car[i] = 0;
car[0]++;
s[0] = 0;
for (i = 1; i <= n; i++) {
s[i] = s[i - 1] + v[i];
if (i > l)
car[s[i - l - 1] % k]--;
sol = sol + car[s[i] % k];
car[s[i] % k]++;
}
return sol;
}
int main() {
int a, b, i;
freopen ("divk.in", "r", stdin);
freopen ("divk.out", "w", stdout);
scanf ("%d%d%d%d", &n, &k, &a, &b);
for (i = 1; i <= n; i++)
scanf ("%d", &v[i]);
printf ("%lld\n", solve (b) - solve (a - 1));
return 0;
}