Cod sursa(job #2240402)

Utilizator oldatlantianSerban Cercelescu oldatlantian Data 13 septembrie 2018 11:07:20
Problema Light2 Scor 0
Compilator cpp Status done
Runda simulare_prega Marime 0.69 kb
#include <bits/stdc++.h>
#define gcd(x, y) __gcd((x), (y))
#define lcm(x, y) ((x) / gcd((x), (y)) * (y))
using namespace std;

ifstream fi("light2.in");
ofstream fo("light2.out");

using i64 = long long;

map<int, int> mp;
vector<i64> elem;
i64 n, ant;
int k, s;

int main() {
	fi >> n >> k;
	for (int t, i = 0; i < n; ++i) {
		fi >> t;
		mp[t]++; }

	for (const auto &i: mp)
		if (i.second % 2)
			elem.push_back(i.first);
	s = elem.size();

	for (int msk = 1; msk < (1 << s); ++msk) {
		i64 g = 1;
		int b = __builtin_popcount(msk);
		for (int bit = 0; bit < s && g <= n; ++bit) if (msk & (1 << bit))
			g = lcm(elem[bit], g);
		ant+= (b % 2 ? 1 : -2) * (n / g); }

	fo << ant << endl;

	return 0; }