Pagini recente » Cod sursa (job #2510517) | Cod sursa (job #333599) | Cod sursa (job #3125582) | Cod sursa (job #1194347) | Cod sursa (job #543270)
Cod sursa(job #543270)
# include <fstream>
# include <iostream>
# define DIM 4200000
using namespace std;
long long 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;
}
}
long long int cmmdc(long long int x, long long 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)]!=-1 && v[nr]!=-1)
v[i]=v[(1<<uj)]/cmmdc(v[(1<<uj)],v[nr])*v[nr];
else
v[i]=-1;
if (v[i]>N) v[i]=-1;
if (v[i]!=-1)
{
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;
}