Pagini recente » Cod sursa (job #75025) | Cod sursa (job #3259086) | Cod sursa (job #2601764) | Cod sursa (job #1286720) | Cod sursa (job #541628)
Cod sursa(job #541628)
#include<fstream>
#include<iostream>
using namespace std;
long long n,k,v[25],s,mx=1,ok=1;
bool y[1000002];
int cmmmc(long long a,long long b)
{long long r,x,y;
x=a;y=b;
while(b!=0)
{r=a % b;a=b;b=r;}
return x*y/a;
}
long long min(long long a,long long b)
{if(a<b) return a;return b;}
void numara()
{long long i,j,r,s2;
j=n-mx;
if(j>0)
{r=n/mx;
j%=mx;
for(i=1;i<=j;i++)
if(y[i])
s++;
s2=s;
for(;i<=mx;i++)
if(y[i])
s++;
s=s*r+s2;
}
else
{for(i=1;i<=n;i++)
if(y[i])
s++;
}
}
void doit()
{long long i,j,d;
for(i=1;i<=k;i++)
if(v[i])
{d=min(n,mx);
for(j=v[i];j<=d;j+=v[i])
{if(y[j]) y[j]=0;
else y[j]=1;}
}
}
void citire()
{int i,j;
ifstream in("light2.in");
in>>n>>k;
for(i=1;i<=k;i++)
{in>>v[i];
if(ok) mx=cmmmc(mx,v[i]);
if(mx>1000000)
ok=0,mx=n;
}
for(i=1;i<k;i++)
for(j=i+1;j<=k;j++)
if(v[i]==v[j])
{v[i]=0;
v[j]=0;
break;
}
mx=min(mx,1000000);
in.close();
}
int main()
{citire();
doit();
numara();
ofstream out("light2.out");
out<<s;out.close();
return 0;
}