Cod sursa(job #3340382)

Utilizator EricDimiCismaru Eric-Dimitrie EricDimi Data 13 februarie 2026 23:20:56
Problema Pairs Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <bitset>

using namespace std;

ifstream f("pairs.in");
ofstream g("pairs.out");

const int NMAX = 100000,
          VMAX = 1000000;

int N, A[NMAX + 1], vMax;
bitset<VMAX + 1> F;
int mu[VMAX + 1];

void precalc()
{
    mu[1] = 1;
    for(int i = 1; i <= VMAX; i++)
        for(int j = i << 1; j <= VMAX; j += i)
            mu[j] -= mu[i];
}

void citire()
{
    f >> N;
    for(int i = 1; i <= N; i++)
    {
        f >> A[i];
        F[A[i]] = 1;
        vMax = max(vMax, A[i]);
    }
}

int main()
{
    precalc();
    citire();
    //
    long long cnt = 0;
    for(int i = 1; i <= vMax; i++)
    {
        int sum = 0;
        for(int j = i; j <= vMax; j += i)
            sum += F[j];
        cnt += (long long)mu[i] * sum * sum;
    }
    cnt = (cnt - F[1]) >> 1;
    g << cnt << '\n';
    //
    f.close();
    g.close();
    return 0;
}