Pagini recente » Cod sursa (job #1721531) | Cod sursa (job #2730872) | Cod sursa (job #174261) | Cod sursa (job #2665080) | Cod sursa (job #1131539)
#include <algorithm>
#include <fstream>
using namespace std;
const int MAX_N = 25;
long long m, answer, a[MAX_N];
int n;
long long get_gcd(long long a, long long b) {
return b ? get_gcd(b, a % b) : a;
}
void backt(int level, int count, long long current_cmmmc) {
if(current_cmmmc > m) {
return;
}
if(level == n + 1) {
answer += ((count & 1) ? 1LL : -1LL) * (1LL << (count - 1)) * (m / current_cmmmc);
} else {
backt(level + 1, count, current_cmmmc);
backt(level + 1, count + 1, current_cmmmc * a[level] / get_gcd(a[level], current_cmmmc));
}
}
int main() {
ifstream fin("light2.in");
ofstream fout("light2.out");
fin >> m >> n;
for(int i = 1; i <= n; ++ i) {
fin >> a[i];
}
backt(1, 0, 1LL);
fout << answer << '\n';
return 0;
}