Pagini recente » Cod sursa (job #2492247) | Cod sursa (job #3181539) | Cod sursa (job #2340749) | Cod sursa (job #2097780) | Cod sursa (job #1700375)
#include <fstream>
#define LL long long
using namespace std;
ifstream cin("divk.in");
ofstream cout("divk.out");
const int MaxN = 500005, MaxK = 100005;
LL ModFreq[MaxK], Psum[MaxN];
LL Ans;
int n, k, A, B, CurrSum, RgSum, LfSum;
int main() {
cin >> n >> k >> A >> B;
for (int i = 1; i < A; ++i) {
int x;
cin >> x;
Psum[i] = Psum[i - 1] + x;
Psum[i] %= k;
}
for (int i = A; i < B; ++i) {
int x;
cin >> x;
Psum[i] = Psum[i - 1] + x;
Psum[i] %= k;
++ModFreq[Psum[i - A]];
Ans += ModFreq[Psum[i]];
}
for (int i = B; i <= n; ++i) {
int x;
cin >> x;
Psum[i] = Psum[i - 1] + x;
Psum[i] %= k;
++ModFreq[Psum[i - A]];
Ans += ModFreq[Psum[i]];
--ModFreq[Psum[i - B]];
}
cout << Ans << '\n';
return 0;
}