Cod sursa(job #541649)

Utilizator robigiirimias robert robigi Data 25 februarie 2011 12:53:49
Problema Light2 Scor 20
Compilator cpp Status done
Runda Romanian Master in Mathematics and Sciences 2011, Ziua 1 Marime 0.88 kb
#include <cstdio>
#include <cmath>

using namespace std;

FILE *f=fopen("light2.in", "r");
FILE *g=fopen("light2.out", "w");


long long n, k, v[230];
long long w[230];
long long rez=0;

void read()
{
	fscanf(f, "%lld%lld", &n, &k);
	for (int i=1; i<=k; ++i)
		fscanf(f, "%lld", &v[i]);
}


void program()
{
	long long sol = n;  
	for (int i = 1; i < (1 << k); i++) 
	{     
		long long nr = 0, prod = 1;    
		for (int j = 0; j < k; j++)        
			if ((1 << j) & i) 
			{          
				prod = 1LL * prod * v[j + 1]; 
				nr++;     
			}     

		float plm=static_cast <float> (nr -1);
		long long p2= static_cast <long long> (pow(2, plm));
		if (nr % 2) nr = -1; 
		else nr=1;
		
		sol = sol + 1LL * nr * n / prod *p2; 
		
	}
		
	fprintf(g, "%lld", n-sol);
}




int main()
{
	read();
	
	program();
	
	fclose(f);
	fclose(g);
	
	return 0;
}