Cod sursa(job #2947558)

Utilizator biancalautaruBianca Lautaru biancalautaru Data 26 noiembrie 2022 12:48:47
Problema Pairs Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#define DIM 1000001
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
int n,x,maxi,cnt,sol,nrd[DIM],f[DIM];
bool d[DIM];
int main() {
    fin>>n;
    for (int i=1;i<=n;i++) {
        fin>>x;
        maxi=max(maxi,x);
        f[x]=1;
    }
    nrd[1]=1;
    for (int i=2;i<=maxi;i++)
        if (nrd[i]==0)
            for (int j=i;j<=maxi;j+=i) {
                nrd[j]++;
                if (j%(i*i)==0)
                    d[j]=1;
            }
    for (int i=2;i<=maxi;i++)
        if (d[i]==0) {
            cnt=0;
            for (int j=i;j<=maxi;j+=i)
                if (f[j]==1)
                    cnt++;
            if (nrd[i]%2==0)
                sol-=1LL*cnt*(cnt-1)/2;
            else
                sol+=1LL*cnt*(cnt-1)/2;
        }
    fout<<1LL*n*(n-1)/2-sol;
    return 0;
}