Cod sursa(job #3168411)

Utilizator Botnaru_VictorBotnaru Victor Botnaru_Victor Data 12 noiembrie 2023 13:12:29
Problema Pairs Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;

#ifndef LOCAL
string name="pairs";
ifstream in(name+".in");
ofstream out(name+".out");
#define cin in
#define cout out
#endif // LOCAL

#define int long long

const int MV = 1e6+5;

int n,inv[MV], mob[MV];

int32_t main()
{
    cin>>n;
    int a;
    for(int i=1;i<=n;i++)
    {
        cin>>a;
        inv[a]++;
    }

    for(int i=2;i<MV;i++)
    {
        mob[i]=1;
    }

    int ans=n*n;
    for(int i=2;i<MV;i++)
    {
        if(mob[i]==0) continue;
        int delta=0;
        for(int j=i;j<MV;j+=i)
        {
            delta+=inv[j];
            if(j!=i) mob[j]-=mob[i];
        }
        if(delta==0) continue;
        ans-=delta*delta*mob[i];
        //cerr<<i<<' '<<delta*delta*mob[i]<<' '<<ans<<'\n';
    }
    cout<<ans/2<<'\n';
    return 0;
}

/*
5
2
6
15
7
10
*/