Cod sursa(job #2521200)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 10 ianuarie 2020 15:38:16
Problema Light2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>

using namespace std;

ifstream fin("light2.in");
ofstream fout("light2.out");

typedef long long ll;

ll n, rez;
ll k, v[30];

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

void gen(ll pas, ll cmmmc, ll semn, ll lg){
    if(pas == k + 1){
        rez += semn * (n / cmmmc) * (1LL  << (lg - 1));
        return;
    }

    gen(pas + 1, cmmmc, semn, lg);
    gen(pas + 1, min(n + 1, (cmmmc * v[pas]) / gcd(cmmmc, v[pas])), (semn == 1 ? -1 : 1), lg + 1);
}

int main()
{
    fin >> n >> k;

    for(int i = 1; i <= k; ++i)
        fin >> v[i];

    gen(1, 1, -1, 0);

    fout << rez << '\n';
    return 0;
}