Cod sursa(job #2181450)

Utilizator lucametehauDart Monkey lucametehau Data 21 martie 2018 18:00:24
Problema Light2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#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 put, bool ok) {
  if(cmmmc > n)
    return;
  else if(ind == k + 1) {
    if(ok)
      sol += (put / 2) * (n / cmmmc);
    else
      sol -= (put / 2) * (n / cmmmc);
  } else {
    Back(ind + 1, cmmmc, put, ok);
    Back(ind + 1, cmmmc * v[ind] / cmmdc(cmmmc, v[ind]), put * 2, 1 - ok);
  }
}

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