Pagini recente » Cod sursa (job #1310072) | Cod sursa (job #999936) | Cod sursa (job #434947) | Cod sursa (job #2495432) | Cod sursa (job #543703)
Cod sursa(job #543703)
#include <stdio.h>
using namespace std;
#define maxn 33
int i, j, k;
long long n, ras;
int v[maxn];
long long cmmdc(long long a, long long b)
{
long long r=a%b;
while(r)
{
a=b;
b=r;
r=a%b;
}
return b;
}
void back(int poz, long long cmmmc, int mk)
{
if(poz==k+1)
{
if(mk==0)
return;
if(mk%2)
ras+=n/cmmmc*(1<<(mk-1));
else
ras-=n/cmmmc*(1<<(mk-1));
return;
}
back(poz+1, cmmmc, mk);
long long x=cmmdc(v[poz], cmmmc);
if(cmmmc/x*v[poz]>n)
return;
back(poz+1, cmmmc/x*v[poz], mk+1);
}
int main()
{
freopen("light2.in", "r", stdin);
freopen("light2.out", "w", stdout);
scanf("%lld%d", &n, &k);
for(int i=1; i<=k; ++i)
scanf("%d", &v[i]);
back(1, 1, 0);
printf("%lld\n", ras);
return 0;
}