Cod sursa(job #2970274)

Utilizator AndreibatmanAndrei Croitoriu Andreibatman Data 24 ianuarie 2023 20:19:37
Problema Pairs Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
int n,x,maxi,fr[1000010],ndp[1000010],pp[1000010],i,j;
long long cnt,ans;
signed main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>x;
        maxi=max(maxi,x);
        fr[x]++;
    }
    ndp[1]=1;
    for(i=2;i<=maxi;i++)
        if(ndp[i]==0)
            for(j=i;j<=maxi;j=j+i)
            {
                ndp[j]++;
                if(j%(i*i)==0)
                    pp[j]=1;
            }
    for(i=2;i<=maxi;i++)
        if(pp[i]==0)
        {
            cnt=0;
            for(j=i;j<=maxi;j=j+i)
                cnt=cnt+fr[j];
            if(ndp[i]%2==1)
                ans=ans+cnt*(cnt-1)/2;
            else ans=ans-cnt*(cnt-1)/2;
        }
    ans=1LL*n*(n-1)/2-ans;
    fout<<ans;
    return 0;
}