Pagini recente » Cod sursa (job #1747480) | Cod sursa (job #3288123) | Cod sursa (job #1587283) | Cod sursa (job #2445526) | Cod sursa (job #541598)
Cod sursa(job #541598)
#include <stdio.h>
int n;
int v[25], c[25][25], d[25];
long long k, sol;
long long cmmdc (long long a, long long b)
{
long long r;
while (b)
{
r = a % b;
a = b;
b = r;
}
return a;
}
void back (int i, int nr, long long prod)
{
if (prod > k)
return;
if (i == n + 1)
{
if (nr & 1)
sol = sol - k / prod * d[nr];
else
sol = sol + k / prod * d[nr];
return;
}
back (i + 1, nr, prod);
back (i + 1, nr + 1, prod * v[i] / cmmdc (prod, v[i]));
}
int main ()
{
freopen ("light2.in", "r", stdin);
freopen ("light2.out", "w", stdout);
scanf ("%lld %d", &k, &n);
int i, j;
for (i = 1; i <= n; i ++)
scanf ("%d", &v[i]);
c[0][0] = 1;
for (i = 1; i <= n; i ++)
{
c[i][0] = 1;
for (j = 1; j <= i; j ++)
c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
}
for (i = 0; i <= n; i ++)
{
j = 0;
if (i & 1)
j = 1;
for (; j <= i; j += 2)
d[i] += c[i][j];
}
back (1, 0, 1);
printf ("%lld\n", k - sol);
return 0;
}