Pagini recente » Cod sursa (job #1925269) | Cod sursa (job #1515887) | Cod sursa (job #3165849) | Cod sursa (job #1732055) | Cod sursa (job #2439165)
#include <iostream>
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream in ("light2.in");
ofstream out ("light2.out");
#define ll long long
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
#define MAX(a, b) (((a) < (b)) ? (b) : (a))
int const nmax = 22;
ll v[1 + nmax];
ll sz, n;
ll lcm(ll a, ll b){
if(a == 0)
return b;
else if(b == 0)
return a;
return a * b / __gcd(a, b);
}
ll backt(int pos, int sign, ll curr, ll coef){
if(sz < curr)
curr = sz + 1;
if(pos == n){
if(curr == 0)
return 0;
return sz / curr * sign * coef;
} else {
return backt(pos + 1, sign, curr, coef) + backt(pos + 1, sign * -1, lcm(curr, v[pos]), coef * 2);
}
}
int main()
{
in >> sz >> n;
for(int i = 0;i < n; i++)
in >> v[i];
out << backt(0, -1, 0, 1) / 2;
return 0;
}