Pagini recente » Profil novo | *PAGINA LUI VI$$U* | Cod sursa (job #1336715) | Sedinta 2008-11-07 | Cod sursa (job #8759)
Cod sursa(job #8759)
using namespace std;
#include <cstdio>
#include <cstring>
#include <iostream>
int N, K, A, B, v[1<<19], S[1<<19], re[1<<17];
long long rec( int len )
{
memset( re, 0, sizeof( re ) );
long long ret = 0;
if( !len )
return ret;
for( int i = 1; i <= len; i++ )
re[ S[i] ]++,
ret += (long long)(re[ S[i] ]);
for( int i = len + 1; i <= N; i++ )
re[ S[i] ]++, re[ S[i - len] ]--,
ret += (long long)(re[ S[i] ]);
cout << len << " : " << ret << endl;
return ret;
}
int main()
{
freopen("divk.in", "r", stdin);
freopen("divk.out", "w", stdout);
int i;
scanf("%d %d %d %d", &N, &K, &A, &B);
for(i = 1; i <= N; i++)
scanf("%d", v+i ),
S[i] = S[i-1] + v[i],
S[i] %= K;
long long ret = rec( B ) - rec( A - 1 );
cout << ret << endl;
return 0;
}