Pagini recente » Diferente pentru implica-te/arhiva-educationala intre reviziile 96 si 223 | Cod sursa (job #175234) | Cod sursa (job #2798407) | Cod sursa (job #2462682) | Cod sursa (job #3278890)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
int n, a[500005], s[500005], k;
///nr de secvente de lungime cel mult L cu suma % k == 0
long long F(int L)
{
int i, fr[100001] = {0};
long long cnt = 0;
fr[0] = 1; s[0] = 0;
for(i = 1; i <= n; i++)
{
s[i] = (s[i - 1] + a[i]) % k;
if(i > L) fr[s[i - L - 1]]--;
cnt += fr[s[i]];
fr[s[i]]++;
}
return cnt;
}
int main()
{
int i, A, B;
fin >> n >> k >> A >> B;
for(i = 1; i <= n; i++)
fin >> a[i];
fout << F(B) - F(A - 1);
return 0;
}