Cod sursa(job #1553582)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 20 decembrie 2015 01:52:16
Problema Light2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

#define DIM 22
using namespace std;

long long V[DIM], N, LCM, sol; int i, K, nr, val;

inline long long GCD (long long X, long long Y) {
    if (X == 1 || Y == 1) return 1;
    return (!X) ? Y : GCD (Y, X % Y);
}

int main () {

    freopen ("light2.in" ,"r", stdin );
    freopen ("light2.out","w", stdout);

    scanf ("%lld %d", &N, &K);

    for (int i = 0; i < K; i ++)
        scanf ("%lld", &V[i]);

    for (int i = 1; i < (1<<K); i ++) {

        val = i; LCM = 1;

        for (int j = 0; j < K; j ++) {
            if (((val>>j)&1)) {
                LCM = LCM * V[j] / GCD (LCM, V[j]);

                if (LCM > N)
                    LCM = N + 1;

                nr ++;
            }
        }

        if ((nr&1))
            sol = sol + (1<<(nr-1)) * 1LL * (N / LCM);
    }

    printf ("%lld\n", sol);

    return 0;
}