Cod sursa(job #1684215)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 10 aprilie 2016 21:34:12
Problema Light2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <algorithm>
#include <cstring>
#include <vector>

using namespace std;

ifstream fin("light2.in");
ofstream fout("light2.out");

int d[25], v[25];

long long n;
int k;

long long getLcm(long long a, long long b) {

	long long ret = a * b;
	while (b) {
		long long r = a % b;
		a = b;
		b = r;
	}

	return ret / a;

}

long long sol = 0;
void back(int i, int sign, long long lcm) {

	sol += (1LL << (i - 2)) * sign * (n / lcm);

	if (i <= k) {

		for (v[i] = v[i - 1] + 1; v[i] <= k; ++v[i])
			back(i + 1, -sign, getLcm(lcm, d[v[i]]));

	}

}

int main() {

	fin >> n >> k;

	for (int i = 1; i <= k; ++i)
		fin >> d[i];

	back(1, -1, 1);

	fout << sol << '\n';

	return 0;

}

//Trust me, I'm the Doctor!