Pagini recente » Cod sursa (job #1368183) | Cod sursa (job #457182) | Cod sursa (job #1873817) | Cod sursa (job #2944338) | Cod sursa (job #1684215)
#include <fstream>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
ifstream fin("light2.in");
ofstream fout("light2.out");
int d[25], v[25];
long long n;
int k;
long long getLcm(long long a, long long b) {
long long ret = a * b;
while (b) {
long long r = a % b;
a = b;
b = r;
}
return ret / a;
}
long long sol = 0;
void back(int i, int sign, long long lcm) {
sol += (1LL << (i - 2)) * sign * (n / lcm);
if (i <= k) {
for (v[i] = v[i - 1] + 1; v[i] <= k; ++v[i])
back(i + 1, -sign, getLcm(lcm, d[v[i]]));
}
}
int main() {
fin >> n >> k;
for (int i = 1; i <= k; ++i)
fin >> d[i];
back(1, -1, 1);
fout << sol << '\n';
return 0;
}
//Trust me, I'm the Doctor!