Cod sursa(job #1780441)

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

using namespace std;

int v1[25],v[25];

long long cmmmc(int n)
{
    long long b=1,p,a,r;
    for(int i=1;i<=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,n,a;
    int k,c;
    scanf("%lld%d",&n,&k);
    for(int i=1;i<=k;i++)
        scanf("%d",&v[i]);
    for(int i=1;i<=(1<<k);i++)
    {
        c=0;
        for(int j=0;j<k;j++)
            if(i&(1<<j)) {c++;v1[c]=v[j+1];}
        if(c>0)
        {
            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;
}