Cod sursa(job #1289153)

Utilizator Yasin_ibraimIbraim Yasin Yasin_ibraim Data 9 decembrie 2014 16:28:19
Problema Pairs Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <bitset>
using namespace std;

ifstream fin ("pairs.in");
ofstream fout ("pairs.out");

#define N 1000000

unsigned long long sol,nr;
bitset <N> n_ok,p;
int f[N], n, M,x,viz[N];

int main()
{
    fin>>n;
    for (int i = 0; i < n; ++i)
    {
        fin>>x;
        viz[x] = 1;
        M = max(M, x);
    }
    for (int i=2; i<=M; ++i)
        if (!p[i])
            for (int j=1; j<=M/i;++j)
            {
                f[i*j]++;
                p[i*j]=1;
                if (j%i == 0)
                    n_ok[i*j] = 1;
            }
    for (int i=2;i<=M;++i)
        if (!n_ok[i])
        {
            nr=0;
            for(int j=1; j<=M/i; ++j)
                if (viz[i*j])
                    nr++;
            if (f[i]%2)
                sol+=nr*(nr-1)/2;
            else
                sol-=nr*(nr-1)/2;
        }
    fout <<n * (n - 1) / 2 - sol;
}