Cod sursa(job #552223)

Utilizator lianaliana tucar liana Data 11 martie 2011 21:13:24
Problema Light2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#define kmax 30
long long i, j, k, n, rez, s, nel, sf, x, r, cmmmc;
long long a[kmax];

long long cmmdc(long long q, long long w)
{
	r=q%w;
	while (r>0)
	{	q=w;	w=r;	r=q%w;	}
	return w;
}

void gen(long long poz)
{
	long long cmmmcan;
	if (poz==k+1)
	{
		if (nel>0)
		{
			if (nel%2==0)
				rez-=(1<<(nel-1))*(n/cmmmc);
			else
				rez+=(1<<(nel-1))*(n/cmmmc);
		}
	}
	else
	{
		gen(poz+1);
		cmmmcan=cmmmc;
		cmmmc=(cmmmc*a[poz])/cmmdc(cmmmc,a[poz]); nel++;
		gen(poz+1);
		cmmmc=cmmmcan; nel--;
	}
}

int main()
{
	freopen("light2.in","r",stdin);
	freopen("light2.out","w",stdout);
	scanf("%lld",&n);
	scanf("%lld",&k);
	for (i=1;i<=k;i++)
		scanf("%lld",&a[i]);
	cmmmc=1;
	gen(1);
	printf("%lld",rez);
	return 0;
}