Pagini recente » Cod sursa (job #2282688) | Cod sursa (job #1956191) | Cod sursa (job #3125241) | Cod sursa (job #2658412) | Cod sursa (job #682659)
Cod sursa(job #682659)
#include <cstdio>
char p[1<<22];
int K, nr, i, j;
long long N, D[22], sol, t[1<<22];
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;
}
int main()
{
freopen("light2.in","r",stdin);
freopen("light2.out","w",stdout);
scanf("%lld", &N);
scanf("%d", &K);
for (i=0; i<K; ++i)
scanf("%d", &D[i]);
nr = 1<<K;
t[0] = 1;
p[0] = 0;
for (i=1; i<nr; ++i)
{
for (j=0; j<K; ++j)
if (i & (1<<j))
{
t[i] = t[i-(1<<j)] * D[j] / cmmdc(t[i-(1<<j)], D[j]), p[i] = p[i-(1<<j)]+1;
break;
}
if (p[i] & 1) sol += N / t[i] * (1<<(p[i]-1));
else sol -= N/t[i]*(1<<(p[i]-1));
}
printf("%lld\n", sol);
return 0;
}