Cod sursa(job #2713755)

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

using namespace std;

long long v[30];
long long k,sol;
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;
}

void back (int pas, long long nr, int poz){

    if (pas > 0){
        if (pas % 2)
            sol += (1<<(pas-1))*(k/nr);
        else sol -= (1<<(pas-1))*(k/nr);
    }

    if (pas >= n)
        return;

    for (int i=poz+1;i<=n;i++){

        long long val = nr * v[i] / gcd(nr,v[i]);
        if (val <= k)
            back (pas+1,val,i);

    }
}

int main (){

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

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

    back (0,1,0);

    cout<<sol;

    return 0;
}