Cod sursa(job #1780450)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 16 octombrie 2016 11:15:07
Problema Light2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>

using namespace std;

int v1[25],v[25];
long long n;

long long cmmmc(int nr)
{
    long long b=1,p,a,r;
    for(int i=1;i<=nr && b<=n;i++)
    {
        a=v1[i];
        p=a*b;
        while(1)
        {
            r=a%b;
            if(r==0) break;
            a=b;
            b=r;
        }
        b=p/b;
    }
    return b;
}

int main()
{
    freopen("light2.in","r",stdin);
    freopen("light2.out","w",stdout);
    long long sol=0,a;
    int k,c;
    scanf("%lld%d",&n,&k);
    for(int i=0;i<k;i++)
        scanf("%d",&v[i]);
    for(int mask=1;mask<(1<<k);mask++)
    {
        c=0;
        for(int i=0;i<k;i++)
            if(mask&(1<<i)) {v1[++c]=v[i];}
        a=cmmmc(c);
        if(c%2==0) sol=sol-(1<<(c-1))*(n/a);
        else sol=sol+(1<<(c-1))*(n/a);
    }
    printf("%lld",sol);
    return 0;
}