Pagini recente » Rating Mihalache Andrei (Mihatriceps) | Cod sursa (job #1307947) | Cod sursa (job #2784554) | Cod sursa (job #1486491) | Cod sursa (job #1773965)
#include <bits/stdc++.h>
#define maxK 23
#define ll long long
#define maxP (1 << 22) + 2
using namespace std;
int m, k, d[maxK], cfmax, lpow[maxP];
ll n, ans;
ll gcd(ll x, ll y)
{
ll r = x % y;
while (r)
{
x = y;
y = r;
r = x % y;
}
return y;
}
void read()
{
freopen("light2.in", "r", stdin);
scanf("%lld\n", &n);
scanf("%d", &k);
for (int i = 0; i < k; ++ i)
{
scanf("%d", &d[i]);
lpow[1 << i] = i;
}
}
void pinex(int i, int nb, ll lcm)
{
int j;
for (j = i + 1; j < k; ++ j)
{
ll Lcm = 1LL * (1LL * lcm * d[j]) / gcd(lcm, 1LL * d[j]);
if (Lcm <= n)
{
if (nb & 1)
ans -= 1LL * (n / Lcm) << nb;
else
ans += 1LL * (n / Lcm) << nb;
pinex(j, nb + 1, Lcm);
}
}
}
void solve()
{
int i, j;
cfmax = 1 << k;
pinex(-1, 0, 1);
}
void write()
{
freopen("light2.out", "w", stdout);
printf("%lld\n", ans);
}
int main()
{
read();
solve();
write();
return 0;
}