Pagini recente » Cod sursa (job #2665933) | Cod sursa (job #2843493) | Cod sursa (job #1377107) | Cod sursa (job #2811215) | Cod sursa (job #2181424)
#include <fstream>
#include <algorithm>
#define ll long long
using namespace std;
ifstream cin ("light2.in");
ofstream cout ("light2.out");
const int kmax = 23;
ll n, sol;
int k;
int v[kmax];
ll cmmdc(ll a, int b) {
int r;
while(b) {
r = a % b;
a = b;
b = r;
}
return a;
}
void Back(int ind, ll cmmmc, int nr) {
if(ind > k)
return;
cmmmc = cmmmc * v[ind] / cmmdc(cmmmc, v[ind]);
int val = (1 << (nr - 1));
if(nr % 2 == 0)
sol -= val * (n / cmmmc);
else
sol += val * (n / cmmmc);
for(int i = ind + 1; i <= k; i++)
Back(i, cmmmc, nr + 1);
}
int main() {
cin >> n >> k;
for(int i = 1; i <= k; i++)
cin >> v[i];
sort(v + 1, v + k + 1);
sol = 0;
for(int i = 1; i <= k; i++)
Back(i, 1, 1);
cout << sol;
return 0;
}