Cod sursa(job #541639)

Utilizator S7012MYPetru Trimbitas S7012MY Data 25 februarie 2011 12:47:55
Problema Light2 Scor 0
Compilator cpp Status done
Runda Romanian Master in Mathematics and Sciences 2011, Ziua 1 Marime 0.68 kb
#include <iostream>
#include <fstream>
#define LL long long
using namespace std;

int d[25],k;
LL n,rez;

int cmmdc(int a, int b) {
    for(int c;b;c=a%b,a=b,b=c);
    return a;
}

int cmmmc(int a,int b) {
    return a*b*1LL/cmmdc(a,b);
}

int main()
{
    ifstream f("light2.in");
    ofstream g("light2.out");
    f>>n>>k;
    int Z6=(int)min(n,1000000LL);
    for(int i=0; i<k; ++i) f>>d[i];
    for(int i=1; i<(1<<k); ++i) {
        int cont=0,lst=1;
        for(int j=0; (1<<j)<=i; ++j) if(i&(1<<j)) {
            ++cont;
            lst=cmmmc(lst,d[j]);
            if(lst>Z6) break;
        }
        if(cont&1) rez+=(n/lst);
        else rez-=(n/lst);
    }
    g<<rez;
    return 0;
}