Cod sursa(job #543747)

Utilizator loginLogin Iustin Anca login Data 28 februarie 2011 15:59:40
Problema Light2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
# include <fstream>
using namespace std;
int k, v[28];
long long n, sol;

void read ()
{
	ifstream fin ("light2.in");
	fin>>n>>k;
	for(int i=1;i<=k;++i)
		fin>>v[i];
}

long long cmmdc(long long x,long long y)
{
	long long r;
	do{
		r=x%y;
		x=y;
		y=r;
	}
	while (r);
	return x;
}

void solve (int p, long long cmmmc, int nt)
{
	if (p==k+1)
	{
		if (nt==0)
			return;
		if (nt%2==0)
			sol-=n/cmmmc*(1<<(nt-1));
		else
			sol+=n/cmmmc*(1<<(nt-1));
		return;
	}
	solve (p+1, cmmmc, nt);
	long long q=cmmmc/cmmdc(cmmmc,v[p])*v[p];
	if (q<=n)
		solve(p+1,q,nt+1);
}
							
int main()
{
	read ();
	solve (1, 1, 0);
	ofstream fout ("light2.out");
	fout<<sol;
	return 0;
}