Cod sursa(job #3249196)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 15 octombrie 2024 13:20:38
Problema Pairs Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>
using namespace std;

int main() {
    freopen("pairs.in", "r", stdin);
    freopen("pairs.out", "w", stdout);
    int n;
    cin >> n;
    int nr;
    const int nmax = 1e6;
    bool is[nmax + 1];
    memset(is, false, sizeof(is));
    for(int i = 0;i < n;++i)
        cin >> nr, is[nr] = true;
    long long gcd[nmax + 1] = {0};
    
    for(int i = 1;i <= nmax;++i)
    {
        int cnt = 0;
        for(int j = i;j <= nmax;j += i)
            cnt += is[j];
        gcd[i] = ((long long) cnt * (cnt - 1)) / 2;    
    }
    for(int i = nmax;i >= 1;--i)
        for(int j = i + i;j <= nmax;j += i)
            gcd[i] -= gcd[j];
    cout << gcd[1] << "\n";    
}