Pagini recente » Cod sursa (job #2040448) | Cod sursa (job #1550079) | Cod sursa (job #1295780) | Cod sursa (job #2863791) | Cod sursa (job #541657)
Cod sursa(job #541657)
#include<cstdio>
int da,nda,nr,n,k,x,n1,n2,cx,a[1000001],nx[31][2];
int cmmdc(int x, int y)
{
if(y==0)
return x;
else return cmmdc(y,x%y);
}
int main()
{
freopen("light2.in","r",stdin);
freopen("light2.out","w",stdout);
scanf("%d",&n);
scanf("%d",&k);
int i; int j; nr=0;
for(i=1;i<=k;i++)
{
scanf("%d",&x);
da=1; nda=0;
for(j=1;j<=nr;j++)
if(x==nx[j][0])
{
da=0;
nx[j][1]=(nx[j][1]+1)%2;
break;
}
if(da)
{
nr++;
nx[nr][0]=x;
nx[nr][1]=1;
}
}
for(j=1;j<=nr;j++)
if(nx[j][1]==1)
{
for(i=nx[j][0];i<=n;i+=nx[j][0])
a[i]=(a[i]+1)%2;
}
for(i=1;i<=nr;i++)
if(nx[i][1]==1)
break;
cx=nx[i][0];
if(i<=nr)
for(j=i+1;j<=nr;j++)
if(nx[j][1]==1)
{
cx=(cx/cmmdc(cx,nx[j][0]))*nx[j][0];
}
n1=0; n2=0;
for(i=1;i<=cx;i++)
if(a[i]==1)
n1++;
for(i=1;i<=n%cx;i++)
if(a[i]==1)
n2++;
if(n<cx)
n1=0;
if(cx==0)
{
n1=0;
cx=1;
}
printf("%d\n",n1*(n/cx)+n2);
return 0;
}