Pagini recente » Cod sursa (job #2276875) | Cod sursa (job #343440) | Cod sursa (job #1603060) | Cod sursa (job #1349044) | Cod sursa (job #541691)
Cod sursa(job #541691)
#include <fstream>
using namespace std;
long long v[1<<5],n,k,nr;
ifstream in("light2.in");
ofstream out("light2.out");
int cmmdc(int a,int b)
{
int c;
while (b)
{
c=a%b;
a=b;
b=c;
}
return a;
}
void bkt(long long p,bool q,long long x)
{
if (x>n)
return;
if (p==k+1)
{
if (q)
nr+=n/x;
else
nr-=n/x*2;
return;
}
bkt(p+1,q,x);
bkt(p+1,!q,x/cmmdc(x,v[p])*v[p]);
}
void mic()
{
long long i,j,p;
for (i=1;i<=n;i++)
{
for (p=0,j=1;j<=k;j++)
p+=(i%v[j]==0);
nr+=(p&1);
}
}
int main()
{
long long i;
in>>n>>k;
for (i=1;i<=k;i++)
in>>v[i];
if (n<=30000000)
mic();
else
{
bkt(1,false,1);
nr+=n;
}
out<<nr<<"\n";
return 0;
}