Pagini recente » Cod sursa (job #852692) | Cod sursa (job #841846) | Cod sursa (job #2080328) | Rating Anton Camelia (CameliaAnton) | Cod sursa (job #70766)
Cod sursa(job #70766)
#include<fstream.h>
long a[500001],N,A,B,K,c[500001];
void citire(){
ifstream fin("divk.in");
fin>>N>>K>>A>>B;
long x;
for (long i=0;i<N;i++){
fin>>x;
a[i]=x%K;}
fin.close();
}
/*long long numar(){
long long S=0,nr=0,S1;
for (long j=0;j<B;j++)
S+=a[j];
S1=S;
for (long i=B-1;i>=A-1;i--) {
if (S1%K==0)
nr++;
S1-=a[i]; }
for (long y=1;y<=N-B;y++){
S1=S+a[y+B-1];
S1=S1-a[y-1];
S=S1;
for (long h=B+y-1;h>=A+y-1;h--){
if (S1%K==0)
nr++;
S1-=a[h];}
}
S=0;
for (long p=N-B;p<N;p++)
S+=a[p];
S1=S;
for (long u=N-B;u>=N-A;u++){
if (S1%K==0)
nr++;
S1-=a[u];}
for ()
return nr;
} */
long long numar(){
long long S=0,nr=0;
for (long u=0;u<A;u++)
S+=a[u];
c[0]=S;
for (long y=1;y<=N-A;y++){
S=c[y-1]+a[y+A-1]-a[y-1];
c[y]=S;
if (c[y]%K==0)
nr++;}
for (long j=0;j<B-A;j++)
for (long i=0;i<N-A-j;i++){
c[i]+=a[i+A+j];
if (c[i]%K==0)
nr++;}
return nr;
}
int main(){
citire();
ofstream fout("divk.out");
fout<<numar();
fout<<"\n";
fout.close();
return 0;
}