Pagini recente » Cod sursa (job #2644693) | Cod sursa (job #2988752) | Cod sursa (job #2715024) | Cod sursa (job #1956587) | Cod sursa (job #2892174)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("light2.in");
ofstream fout("light2.out");
int64_t lcm(int64_t x, int64_t y) {
return x / __gcd(x, y) * y;
}
void testCase() {
int64_t n;
fin >> n;
int m;
fin >> m;
vector<int> a(m);
for (int &x : a) {
fin >> x;
}
sort(a.rbegin(), a.rend());
int64_t ans = 0;
for (int mask = 1; mask < (1 << m); ++mask) {
int64_t num = 1;
for (int i = 0; (1 << i) <= mask; ++i) {
if (mask & (1 << i)) {
num = lcm(num, a[i]);
if (n < num) {
break;
}
}
}
int cnt = __builtin_popcount(mask);
if (cnt % 2 == 1) {
ans += (n / num) * (1 << (cnt - 1));
} else {
ans -= (n / num) * (1 << (cnt - 1));
}
}
fout << ans << '\n';
}
int main() {
int tests = 1;
for (int tc = 1; tc <= tests; ++tc) {
testCase();
}
fin.close();
fout.close();
return 0;
}