Cod sursa(job #3221719)

Utilizator Simon2712Simon Slanina Simon2712 Data 7 aprilie 2024 21:02:12
Problema Pairs Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;
#define ll long long
ifstream fin("pairs.in");
ofstream fout("pairs.out");
const int N=1e5+1,VALMAX=1e6+1;
int ciur[VALMAX];
bool vc[VALMAX];
int main()
{
    int n,i,j,x,cnt;
    ll rez=0;
    fin>>n;
    for(i=2;i<VALMAX;i++)
    {
        if(ciur[i]==0){
            for(j=i;j<VALMAX;j+=i){
                if(ciur[j]!=-1){
                    if((j/i)%i!=0 && ciur[j/i]!=-1)
                        ciur[j]++;
                    else
                        ciur[j]=-1;
                }
            }
        }
    }
    for(i=1;i<=n;i++)
    {
        fin>>x;
        vc[x]=1;
    }
    for(i=2;i<VALMAX;i++)
    {
        cnt=0;
        for(j=i;j<VALMAX;j+=i)
        {
            if(vc[j])
                cnt++;
        }
        if(ciur[i]==-1)
            continue;
        if(ciur[i]%2==0)
            rez-=1LL*cnt*(cnt-1)/2;
        else
            rez+=1LL*cnt*(cnt-1)/2;
    }
    fout<<n*(n-1)/2-rez;
    return 0;
}