Pagini recente » Cod sursa (job #1464047) | Monitorul de evaluare | Cod sursa (job #1011664) | Cod sursa (job #220008) | Cod sursa (job #1553584)
#include <cstdio>
#define DIM 22
using namespace std;
long long V[DIM], N, LCM, sol; int i, K, nr;
inline long long GCD (long long X, long long Y) {
long long Z;
while (Y) {
Z = X % Y;
X = Y; Y = Z;
}
return X;
}
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 ++) {
nr = 0; LCM = 1;
for (int j = 0; j < K; j ++) {
if (((i>>j)&1)) {
LCM = (LCM * V[j]) / GCD (LCM, V[j]);
if (LCM > N)
LCM = N + 1;
nr ++;
}
}
if ((nr&1))
sol += (1<<(nr-1)) * 1LL * (N / LCM);
else
sol -= (1<<(nr-1)) * 1LL * (N / LCM);
}
printf ("%lld\n", sol);
return 0;
}