Cod sursa(job #2451197)

Utilizator RadianElevenAdrian Ariotn RadianEleven Data 26 august 2019 10:15:58
Problema Pairs Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f ("pairs.in");
ofstream g ("pairs.out");
bool isinSet[1000002], ispp[1000002];
long long ciur[1000002];
long long n,x, maxx;
int main()
{
    f>>n;
    for(int i=1;i<=n;++i)
    {
        f>>x;
        maxx=max(maxx,x);
        isinSet[x]=true;
    }
    for(int i=2;i<=maxx;++i)
    {
        if(!ciur[i])
        {
            for(int j=i;j<=maxx;j+=i)
            {
                ++ciur[i];
                if(j%(i*i)==0)
                    ispp[j]=true; // nu e bun pt ca se repeta cand numar multiplii
            }
        }
    }
    long long s=0;

    for(int i=2;i<=maxx;++i)
    {

        if(!ispp[i])
        {
            long long nr=0;
            for(int j=2;j<=maxx;j+=i)
            {
                if(isinSet[j])
                        ++nr;
            }
            if(ciur[i]%2==1) s+= 1ll*nr*(nr-1) /2;
            else s-= 1ll*nr*(nr-1) /2;
        }
    }
    g<<1ll*n*(n-1)/2 - s;
    return 0;
}