Pagini recente » Cod sursa (job #620941) | Cod sursa (job #1290756) | Cod sursa (job #2572917) | Cod sursa (job #197112) | Cod sursa (job #543704)
Cod sursa(job #543704)
#include <algorithm>
using namespace std;
#define pb push_back
#define mp make_pair
#define MAX (1<<22)+5
#define DIM 25
int d[DIM],nrb[MAX];
long long v[MAX];
long long N,nrt;
int K,M;
void read ()
{
int i;
scanf ("%lld%d",&N,&K);
for (i=1; i<=K; ++i)
scanf ("%d",&d[i]);
}
inline int cmmdc (int a,int b)
{
if (!b)
return a;
return cmmdc (b,a%b);
}
void back (int step,long long mul,int nrb)
{
if (step==K+1)
{
if (nrb)
if (nrb&1)
nrt+=(N/mul)*(1<<(nrb-1));
else
nrt-=(N/mul)*(1<<(nrb-1));
}
else
{
back (step+1,mul,nrb);
back (step+1,mul*d[step]/cmmdc (d[step],mul%d[step]),nrb+1);
}
}
int main ()
{
freopen ("light2.in","r",stdin);
freopen ("light2.out","w",stdout);
read ();
back (1,1,0);
printf ("%lld",nrt);
return 0;
}