Cod sursa(job #728569)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 28 martie 2012 19:57:57
Problema Light2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<iostream>
#include<fstream>
using namespace std;

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

long long n,sol,k,x[23];

inline long long gcd(long long a, long long b) {
	long long t;
	
	while(b) {
		t = a%b;
		a = b;
		b = t;
	}
	
	return a;
}

inline void rez(long long poz, long long el, long long op, long long pp) {
	long long i,t;
	
	for(i=poz+1;i<=k;++i) {
		t = el*x[i]/gcd(el,x[i]);
		sol += n/t*op*pp;
		rez(i, t, -op, 2*pp);
	}
}

int main() {
	int i;
	
	in >> n >> k;
	
	for(i=1;i<=k;++i)
		in >> x[i];
	
	for(i=1;i<=k;++i) {
		sol+=n/x[i];
		
		rez(i, x[i], -1, 2);
	}
	
	out << sol << "\n";
	
	return 0;
}