Cod sursa(job #2181420)

Utilizator lucametehauDart Monkey lucametehau Data 21 martie 2018 17:41:48
Problema Light2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <algorithm>
#define ll long long

using namespace std;

ifstream cin ("light2.in");
ofstream cout ("light2.out");

const int kmax = 23;

ll n, sol;
int k;

int v[kmax];

ll cmmdc(ll a, ll b) {
  ll r;
  while(b) {
    r = a % b;
    a = b;
    b = r;
  }
  return a;
}

void Back(int ind, ll cmmmc, int nr) {
  if(ind > n)
    return;
  cmmmc = cmmmc * v[ind] / cmmdc(cmmmc, v[ind]);
  int val = (1 << (nr - 1));
  if(nr % 2 == 0)
    sol -= val * (n / cmmmc);
  else
    sol += val * (n / cmmmc);
  for(int i = ind + 1; i <= k; i++)
    Back(i, cmmmc, nr + 1);
}

int main() {
  cin >> n >> k;
  for(int i = 1; i <= k; i++)
    cin >> v[i];
  sort(v + 1, v + k + 1);
  sol = 0;
  for(int i = 1; i <= k; i++)
    Back(i, 1LL, 1);
  cout << sol;
  return 0;
}