Pagini recente » Cod sursa (job #1731964) | Cod sursa (job #2127052) | Cod sursa (job #53074) | Cod sursa (job #866673) | Cod sursa (job #543272)
Cod sursa(job #543272)
# include <fstream>
# include <iostream>
# define DIM 4200000
using namespace std;
int K, v[DIM];
long long N, sol;
void read ()
{
ifstream fin ("light2.in");
fin>>N>>K;
long long x;
for(int i=0;i<K;++i)
{
fin>>x;
v[(1<<i)]=x;
}
}
int cmmdc(int x, int y)
{
long long r;
do{
r=x%y;
x=y;
y=r;
}
while (r);
return x;
}
void solve ()
{
long long int ho=1<<K, nt, nr, uj, s;
for(int i=1;i<ho;++i)
{
s=-1;
nt=nr=0;
for(int j=0;(1<<j)<=i;++j)
if ((1<<j)&i)
{
if (nt)
nr+=(1<<uj);
++nt;
uj=j;
s*=-1;
}
if (nt==1)
sol+=N/v[(1<<uj)];
else
{
if (v[(1<<uj)]<=N && v[nr]<=N)
v[i]=v[(1<<uj)]/cmmdc(v[(1<<uj)],v[nr])*v[nr];
else
v[i]=N+1;
if (v[i]<=N)
{
if (s==-1)
sol-=(1<<(nt-1))*(N/v[i]);
else
sol+=(1<<(nt-1))*(N/v[i]);
}
}
}
}
int main()
{
read ();
solve ();
ofstream fout ("light2.out");
fout<<sol;
return 0;
}