Cod sursa(job #1468724)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 6 august 2015 19:56:24
Problema Light2 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#include <vector>
using namespace std;

constexpr int bitcount(const long long x, const int rez = 0){
	return (x==0) ? rez : bitcount(x ^ (x&-x), rez+1); }

int main(){
	ifstream f("light2.in");
	ofstream g("light2.out");
	long long n, k;
	f >> n >> k;
	vector<long long> v(k);
	for(auto& x : v){
		f >> x; }
	long long rez = 0;
	for(int config = 1; config < (1<<k); ++config){
		long long nr = 1;
		for(int i = 0; i < k; ++i){
			if((config>>i)&1){
				nr *= v[i]; } }
		const int bc = bitcount(config);
		switch(bc%2){
		case 0:
			rez -= (n/nr) * (1<<(bc-1));
			break;
		case 1:
			rez += (n/nr) * (1<<(bc-1));
			break; } }
	g << rez;
	return 0; }