Cod sursa(job #572642)

Utilizator S7012MYPetru Trimbitas S7012MY Data 5 aprilie 2011 15:07:39
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <bitset>
#define DN 1000005
using namespace std;

bitset<DN> viz,nrf/*par/impar*/,prim,divv;

int main()
{
    ifstream f("pairs.in");
    ofstream g("pairs.out");
    long long n,rez=0,cc,lim=0,i,j;
    f>>n;
    for( i=1; i<=n; ++i) {
        f>>cc;
        viz[cc]=1;
        lim=max(lim,cc);
    }
    for( i=2; i<=lim; ++i) if(0==prim[i]) for( j=1; j<=lim/i;++j) {
        prim[j*i]=1;
        if(0==j%i) divv[j*i]=1;
        nrf[j*i]=nrf[j*i]^1;
    }
    for( i=2; i<=lim; ++i) if(0==divv[i]) {
        long long cont=0;
        for( j=1; j<=lim/i; ++j) if(1==viz[i*j]) ++cont;
        if(0==nrf[i]) rez-=(cont*(cont-1)/2);
        else rez+=(cont*(cont-1)/2);
    }
    g<<1LL*n*(n-1)/2-rez;
    return 0;
}