Pagini recente » Cod sursa (job #2998767) | Borderou de evaluare (job #1796795) | Cod sursa (job #2508348) | Cod sursa (job #40427) | Cod sursa (job #1896662)
#include <cstdio>
using namespace std;
int s[500005], f[100005];
int main() {
freopen("divk.in", "r", stdin);
freopen("divk.out", "w", stdout);
int n, k, a, b, x;
long long sol = 0;
scanf("%d%d%d%d", &n, &k, &a, &b);
for(int i = 1; i <= n; ++ i) {
scanf("%d", &x);
s[i] = (s[i - 1] + x) % k;
}
++ f[0];
for(int i = a; i <= n; ++ i) {
sol += f[s[i] % k];
++ f[s[i - a + 1] % k];
if(i - b >= 0) {
-- f[s[i - b] % k];
}
}
printf("%lld", sol);
return 0;
}