Cod sursa(job #2713740)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 28 februarie 2021 15:37:12
Problema Light2 Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

long long v[30];
long long k;
int n,i;

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

int main (){

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

    cin>>k>>n;
    for (i=0;i<n;i++)
        cin>>v[i];

    long long sol = 0;
    for (int mask=1;mask<(1<<n);mask++){
        long long nr = 0, cnt = 0;
        for (int bit=0;bit<n;bit++){
            if (!(mask & (1<<bit)))
                continue;
            cnt++;
            if (!nr)
                nr = v[bit];
            else nr = nr * v[bit] / gcd (nr,v[bit]);

            if (nr > k)
                break;
        }

        if (cnt % 2)
            sol += (1<<(cnt-1))*(k/nr);
        else sol -= (1<<(cnt-1))*(k/nr);
    }

    cout<<sol;

    return 0;
}