Pagini recente » Cod sursa (job #249490) | Cod sursa (job #603273) | Cod sursa (job #1918222) | Cod sursa (job #2395365) | Cod sursa (job #2240375)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("light2.in");
ofstream g ("light2.out");
long long n, ans, v[50];
int k;
long long FindGcd (long long a, long long b) {
long long r = a % b;
while (r) {
a = b;
b = r;
r = a % b;
}
return b;
}
void bkt (int pos, int lcm, int sgn, int nr) {
if (lcm > n) return;
if (pos > k) {
ans += sgn * n * nr / lcm;
return;
}
bkt (pos + 1, lcm, sgn, nr);
if (sgn == 1)
bkt (pos + 1, lcm * v[pos] / FindGcd(lcm, v[pos]), -1, nr + 1);
else
bkt (pos + 1, lcm * v[pos] / FindGcd(lcm, v[pos]), 1, nr + 1);
}
int main() {
f >> n >> k;
for (int i = 1; i <= k; ++ i) {
f >> v[i];
}
bkt (1, 1, 0, 0);
g << ans << '\n';
return 0;
}