Pagini recente » Cod sursa (job #1736223) | Cod sursa (job #1686082) | Cod sursa (job #1772920) | Profil raluca1234 | Cod sursa (job #543846)
Cod sursa(job #543846)
#include <stdio.h>
int n;
int v[25];
long long k, sol;
long long cmmdc (long long a, long long b)
{
while (a && b)
{
if (a > b)
a %= b;
else
b %= a;
}
return a + b;
}
void back (int i, int nr, long long prod)
{
if (prod > k)
return;
if (i == n + 1)
{
if (nr & 1)
sol = sol + k / prod * (1 << nr - 1);
else
sol = sol - k / prod * (1 << nr - 1);
return;
}
if (i == n && nr == 0)
back (i + 1, nr + 1, prod * v[i] / cmmdc (prod, v[i]));
else
{
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;
for (i = 1; i <= n; i ++)
scanf ("%d", &v[i]);
back (1, 0, 1);
printf ("%lld\n", sol);
return 0;
}