Pagini recente » Cod sursa (job #1528083) | Cod sursa (job #691272) | Rating Armaczki Alexandra (Desiree_Clary) | Cod sursa (job #1361591) | Cod sursa (job #1553590)
#include <cstdio>
#include <algorithm>
#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;
}
void backTrack (int pos, long long LCM, int nrBit) {
LCM = (LCM * V[pos]) / GCD (LCM, V[pos]);
if (LCM > N)
return;
if (nrBit&1)
sol += (1<<(nrBit-1)) * (N / LCM);
else
sol -= (1<<(nrBit-1)) * (N / LCM);
for (int i = pos + 1; i < K; i ++)
backTrack (i, LCM, nrBit + 1);
return;
}
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]);
sort (V, V + K);
reverse (V, V + K);
for (int i = 0; i < K; i ++)
backTrack (i, 1, 1);
printf ("%lld\n", sol);
return 0;
}