Cod sursa(job #2181426)

Utilizator lucametehauDart Monkey lucametehau Data 21 martie 2018 17:45:16
Problema Light2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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, int b) {
  int r;
  while(b) {
    r = a % b;
    a = b;
    b = r;
  }
  return a;
}

void Back(int ind, ll cmmmc, int nr) {
  if(ind > k)
    return;
  cmmmc = cmmmc * v[ind] / cmmdc(cmmmc, v[ind]);
  if(nr % 2 == 0)
    sol -= (1 << (nr - 1)) * (n / cmmmc);
  else
    sol += (1 << (nr - 1)) * (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, 1, 1);
  cout << sol;
  return 0;
}