Pagini recente » Cod sursa (job #1237047) | Cod sursa (job #1403948) | Cod sursa (job #1212367) | Cod sursa (job #1508656) | Cod sursa (job #1106456)
#include<iostream>
#include<fstream>
#define Nmax 500002
using namespace std;
long X[Nmax];
long N;
long K, A, B;
long Y[Nmax];
long initializare() {
long s = 0;
long nr = 0;
for ( int i = 1; i <= A ; i++ ) {
s += X[i];
}
Y[A] = s;
if (Y[A] % K == 0) {
nr ++;
}
for ( int i = A + 1; i <= N; i++) {
Y[i] = Y[i - 1] + X[i] - X[i - A];
if ( Y[i] % K == 0 ) {
nr ++;
}
}
return nr;
}
long numarDivizori() {
long nr;
nr = initializare();
for ( int i = A + 1; i <= B; i++ ) {
Y[i] = Y[i - 1] + X[i];
if ( Y[i] % K == 0 ) {
nr ++;
}
for ( int j = i + 1; j <= N; j++ ) {
Y[j] = Y[j-1] + X[j] - X[j - i];
if ( Y[j] % K == 0 ) {
nr ++;
}
}
}
return nr;
}
int main() {
ifstream f("divk.in");
ofstream g("divk.out");
f >> N;
f >> K;
f >> A;
f >> B;
for ( int i = 1; i <= N; i++ ) {
f >> X[i];
}
g << numarDivizori();
f.close();
g.close();
return 0;
}