Pagini recente » Cod sursa (job #3141199) | Cod sursa (job #364698) | Cod sursa (job #58848) | Cod sursa (job #2595805) | Cod sursa (job #1946304)
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
constexpr int maxn = 1e6 + 100;
char nr_prime_divs[maxn] = {};
int nr_mults[maxn] = {};
ifstream f("pairs.in");
ofstream g("pairs.out");
int main(){
int n;
f >> n;
for(int x; n; --n) f >> x, nr_mults[x] = 1;
memset(nr_prime_divs, 1, maxn);
nr_prime_divs[1] = 0;
for(int i = 1; i < maxn; ++i){
int j = 2;
for( ; j <= i && i*j < maxn; ++j)
nr_prime_divs[i*j] = nr_prime_divs[i] + nr_prime_divs[j],
nr_mults[i] += nr_mults[i*j];
for( ; i*j < maxn; ++j)
nr_mults[i] += nr_mults[i*j]; }
ll rez = 0;
for(int i = 1; i < maxn; ++i)
rez += (nr_prime_divs[i]%2 ? -1ll : 1ll) *
nr_mults[i] * (nr_mults[i] - 1ll) / 2ll;
g << rez << endl;
return 0; }