Cod sursa(job #2439155)

Utilizator AlexandruLuchianov1Alex Luchianov AlexandruLuchianov1 Data 15 iulie 2019 11:17:40
Problema Light2 Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#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 lcm(ll a, ll b, ll lim){
  ll gcd = __gcd(a, b);
  ll result = a * b / gcd;
  if(result <= lim)
    return result;
  else
    return lim + 1;
}

int main()
{
  ll sz, n;
  in >> sz >> n;
  for(int i = 0;i < n; i++)
    in >> v[i];
  ll result = 0;
  for(int mask = 1; mask < (1 << n); mask++){
    ll val = 1;
    int sign = -1;
    for(int i = 0; i < n; i++) {
      if(0 < (mask & (1 << i))) {
        val = lcm(val, v[i], sz);
        sign *= -1;
      }
    }
    result += sz / val * sign;
  }
  out << result;
  return 0;
}