Pagini recente » Cod sursa (job #8233) | Cod sursa (job #2203950) | Cod sursa (job #622621) | Monitorul de evaluare | Cod sursa (job #1553582)
#include <cstdio>
#define DIM 22
using namespace std;
long long V[DIM], N, LCM, sol; int i, K, nr, val;
inline long long GCD (long long X, long long Y) {
if (X == 1 || Y == 1) return 1;
return (!X) ? Y : GCD (Y, X % Y);
}
int main () {
freopen ("light2.in" ,"r", stdin );
freopen ("light2.out","w", stdout);
scanf ("%lld %d", &N, &K);
for (int i = 0; i < K; i ++)
scanf ("%lld", &V[i]);
for (int i = 1; i < (1<<K); i ++) {
val = i; LCM = 1;
for (int j = 0; j < K; j ++) {
if (((val>>j)&1)) {
LCM = LCM * V[j] / GCD (LCM, V[j]);
if (LCM > N)
LCM = N + 1;
nr ++;
}
}
if ((nr&1))
sol = sol + (1<<(nr-1)) * 1LL * (N / LCM);
}
printf ("%lld\n", sol);
return 0;
}