Cod sursa(job #2347127)

Utilizator vladcoroian2001Vlad Coroian vladcoroian2001 Data 18 februarie 2019 15:18:24
Problema Pairs Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <bitset>
using namespace std;
ifstream fi("pairs.in");
ofstream fo("pairs.out");
const int NMAX=1e5+5,MAX=1e6+5;
int x[NMAX],fct[MAX],mx,n;
bitset <MAX> rau,in;
vector <int> v;
long long rez;
int main()
{
    fi>>n;
    for(int i=1;i<=n;i++)
    {
        fi>>x[i];
        in[x[i]]=1;
        mx=max(x[i],mx);
    }
    for(int i=2;i<=mx;i++)
        if(!fct[i])
            for(int j=i;j<=mx;j+=i)
            {    
                fct[j]++;
                if((j%(i*i))==0)
                    rau[j]=1;
            }
    for(int i=2;i<=mx;i++)
        if(!rau[i])
            v.push_back(i);
    for(int i=0;i<v.size();i++)
    {
        long long d=0;
        for(int j=v[i];j<=mx;j+=v[i])
            if(in[j]) d++;
        if(fct[v[i]]%2) rez+=d*(d-1)/2;
        else rez-=d*(d-1)/2;
    }
    fo<<1LL*n*(n-1)/2-rez;
    fi.close();
    fo.close();
    return 0;
}