Pagini recente » Cod sursa (job #604326) | Cod sursa (job #1252612) | Cod sursa (job #3257328) | Cod sursa (job #624131) | Cod sursa (job #1246870)
using namespace std;
#include <fstream>
ifstream fin("light2.in");
ofstream fout("light2.out");
#define ll long long
#define Kmax 22
int k;
ll n, s = 0;
int v[Kmax];
ll cmmdc(ll, ll) ;
void numara(int, int, int, ll) ;
int main()
{
int i;
fin >> n >> k;
for(i = 0; i < k; ++i) fin >> v[i];
numara(0, 0, 0, 1);
fout << s << '\n';
return 0;
}
ll cmmmc(ll a, ll b)
{
if(a == 1) return b;
if(b == 1) return a;
if(a == n + 1) return n + 1;
if(b == n + 1) return n + 1;
ll r, a1 = a, b1 = b;
while(a % b != 0)
{
r = a % b;
a = b;
b = r;
}
r = (a1 / b) * b1;
if(r > n) r = 1 + n;
return r;
}
void numara(int stare, int level, int nr, ll mult)
{
if(nr > 0 && stare == 1 && mult <= n)
{
if((nr & 1) == 1) s += (n / mult) * (1 << (nr - 1));
else s -= (n / mult) * (1 << (nr - 1));
}
if(level == k) return;
numara(0, level + 1, nr, mult);
numara(1, level + 1, nr + 1, cmmmc(mult, v[level]));
}