Cod sursa(job #1468733)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 6 august 2015 20:39:25
Problema Light2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <vector>
#include <utility>
using namespace std;

int bitcount(long long x){
	int rez = 0;
	while(x){
		x ^= (x&-x);
		++rez; }
	return rez; }

long long euclid(long long a, long long b){
	while(a){
		b %= a;
		swap(a, b); }
	return b; }

int main(){
	ifstream f("light2.in");
	ofstream g("light2.out");
	long long n, k, v[22];
	f >> n >> k;
	for(int i = 0; i < k; ++i){
		f >> v[i]; }

	long long rez = 0;
	for(int config = 1; config < (1<<k); ++config){
		long long nr = 1, lcm = 1;
		for(int i = 0; i < k; ++i){
			if((config>>i)&1){
				nr *= v[i];
				lcm = ((lcm * v[i]) / euclid(lcm, v[i])); } }
		const int bc = bitcount(config);
		switch(bc%2){
		case 0:
			rez -= (n/lcm) << (bc-1);
			break;
		case 1:
			rez += (n/lcm) << (bc-1);
			break; } }
	g << rez;
	return 0; }