Cod sursa(job #178836)
| Utilizator | Data | 15 aprilie 2008 11:18:56 | |
|---|---|---|---|
| Problema | Divk | Scor | 50 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.49 kb |
#include<fstream.h>
int main()
{
int nr=0,v[500001],p,u,n,i,j,k,a,b;
ifstream f("divk.in");
f>>n>>k>>a>>b;
for (i=1;i<=n;i++) {f>>v[i];v[i]%=k;}
f.close();
p=0;
for (i=1;i<=a;i++) p=(p+v[i])%k;
u=p;if (p==0) nr++;
for (i=a+1;i<=b;i++) {u=(u+v[i])%k; if (u==0) nr++;}
for (i=2;i<=n-a+1;i++)
{
p=p-v[i-1]+v[i+a-1]; if (p<0) p+=k;
if (p%k==0) nr++;
u=p;
for (j=i+a;j<=i+b-1 && j<=n;j++)
{u=(u+v[j])%k; if (!u) nr++;}
}
ofstream g("divk.out");
g<<nr;g.close();
return 0;
}