Cod sursa(job #541632)

Utilizator LgregL Greg Lgreg Data 25 februarie 2011 12:45:38
Problema Light2 Scor 20
Compilator cpp Status done
Runda Romanian Master in Mathematics and Sciences 2011, Ziua 1 Marime 0.77 kb
#include<stdio.h>

int N,K,v[203],q,rez;
int euc(int a,int b)
{
if(b==0) return a;
else return euc(b,a%b);
}
int cmmmc(int a,int b)
{
    return a*b/euc(a,b);
}
int desc(int x)
{
    int k=1;
    int S=1;
    int P=1;
    q=0;
    while(x)
    {//printf("%d",x%2);
        if(x%2==1)
        {++q;
        if(q==1)
            S=v[k];
            else
         S=cmmmc(S,v[k]);

        }
        x=x/2;
         ++k;
    }



    if(q%2==1)
    rez+=(N/S)*(1<<(q-1));
    else rez-=(N/S)*(1<<(q-1));

}

int main()
{
freopen("light2.in","r",stdin);
freopen("light2.out","w",stdout);
scanf("%d%d",&N,&K);
for(int i=1;i<=K;++i)
    scanf("%d",&v[i]);

for(int i=1;i<=(1<<K)-1;++i)
    {
        desc(i);
    }
    printf("%d\n",rez);
}