Cod sursa(job #2314792)

Utilizator dianamichesaRosu Diana Michesa dianamichesa Data 9 ianuarie 2019 01:48:47
Problema Pairs Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
const int N = 1000002;
int v[N], ap[N];
bool c[N];
long long mx, n, rasp;
int main()
{
    f >> n;
    for(int i = 1; i <= n; i ++) {
        f >> v[i];
        if(v[i] > mx)
            mx = v[i];
        c[v[i]] = true;
    }
    for(long long i = 2; i <= mx; i ++)
    if(!ap[i])
        for(long long j = i; j <= mx; j += i)
        ap[j] ++;
    for(long long i = 2; i * i <= mx; i ++) {
        for(long long j = i * i; j <= mx; j += i * i)
            ap[j] = -N;
    }
    for(long long i = 2; i <= mx; i ++) {
        if(ap[i] < 0)
            continue;
        long long rez = 0;
        for(long long j = i; j <= mx; j += i)
            if(c[j])
            rez ++;
        int k = rez * (rez - 1) / 2;
        if(ap[i] % 2)
            rasp += k;
        else
            rasp -= k;
    }
    g << n * (n - 1) / 2 - rasp;
    return 0;
}