Cod sursa(job #3332801)

Utilizator novak1snovac luca novak1s Data 9 ianuarie 2026 10:07:30
Problema Pairs Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
#include <iomanip>
using namespace std;
#define int long long
const int nmax=1e6;
int fr[nmax],fr2[nmax];
int miu(int a){
    int cnt=0;
    int d=2;
    while(d*d<=a){
        if(a%(d*d)==0)return 0;
        if(a%d==0){
            cnt++;
            a/=d;
        }
        d++;
    }
    if(a>1){
        cnt++;
    }
    if(cnt%2==1)return -1;
    else return 1;
}
signed main() {
    ifstream cin("pairs.in");
    ofstream cout("pairs.out");
    int n;
    cin >> n;
    for(int i=1;i<=n;i++){
        int a;
        cin >> a;
        fr[a]=1;
    }
    for(int i=2;i<nmax;i++){
        for(int j=i;j<nmax;j+=i){
            if(fr[j]==1){
                fr2[i]++;
            }
        }
    }

    int rasp=n*(n-1);
    rasp/=2;
    for(int i=2;i<nmax;i++){
        if(fr2[i]>1){
            rasp+=miu(i)*(fr2[i]*(fr2[i]-1))/2;
        }
    }
    cout << rasp;
    return 0;
}