Cod sursa(job #2660674)

Utilizator robertrRotaru Stefan Robert robertr Data 20 octombrie 2020 08:25:33
Problema Pairs Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <vector>
#include <bitset>
#include <set>

using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");

set<int> mySet;

int n, x, sol, v[100005];

vector<int> lessPrime(int x) {
	bitset<1000005> b;
	vector<int> output;

	for(int d = 2; d * d <= x; ++d) {
		if(x % d == 0) {
			for(int j = d; j <= x; j += d) {
				b[j] = 1;
			}
			int p = x / d;
			for(int j = p; j <= x; j += p) {
				b[j] = 1;
			}
		}
	}
	for(int i = 2; i < x; ++i) {
		if(!b[i]) output.push_back(i);
	}

	return output;
}

int main() {
	f >> n;
	for(int i = 1; i <= n; ++i) {
		f >> v[i];
		mySet.insert(v[i]);
	}

	for(int i = 1; i <= n; ++i) {
		vector<int> primes = lessPrime(v[i]);
		for(int j = 0; j < primes.size(); ++j) {
			if(mySet.find(primes[j]) != mySet.end()) {
				sol++;
			}
		}
	}

	g << sol << '\n';
	return 0;
}