Pagini recente » Cod sursa (job #886831) | Cod sursa (job #999851) | Cod sursa (job #1992385) | Cod sursa (job #3205635) | Cod sursa (job #544253)
Cod sursa(job #544253)
#include <cstdio>
#include <cstring>
using namespace std;
const char iname[] = "light2.in";
const char oname[] = "light2.out";
int a[25], back[25], i, p, k;
long long rez, cmmmc[25], n;
long long cmmdc(long long a, long long b) {
if (b == 0)
return a;
return cmmdc(b, a % b);
}
int main() {
freopen(iname, "r", stdin);
freopen(oname, "w", stdout);
scanf("%lld", &n);
scanf("%d", &k);
for (i = 1; i <= k; ++i)
scanf("%d", &a[i]);
p = 1;
cmmmc[0] = 1;
while (p > 0)
{
++back[p];
if (back[p] > k) {
--p;
continue;
}
cmmmc[p] = (a[back[p]] / cmmdc(a[back[p]], cmmmc[p - 1])) * cmmmc[p - 1];
if (cmmmc[p] > n)
continue;
if (p % 2 == 1)
rez += (n / cmmmc[p]) * (1LL << (p - 1));
else
rez -= (n / cmmmc[p]) * (1LL << (p - 1));
back[p + 1] = back[p];
++p;
}
printf("%lld\n", rez);
}