Cod sursa(job #1293743)

Utilizator refugiatBoni Daniel Stefan refugiat Data 16 decembrie 2014 15:07:25
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<iostream>
#include<fstream>
#include<bitset>
#include<algorithm>
using namespace std;
#define N 100010
bitset<N> p,b;
int d[N];
int main()
{
    ifstream si;
    si.open("pairs.in");
    ofstream so;
    so.open("pairs.out");
    int n;
    si>>n;
    int v[n],i;
    int maxx=0;
    for(i=0;i<n;++i)
    {
        si>>v[i];
        if(v[i]>maxx)
            maxx=v[i];
    }
    p[1]=0;
    b[1]=1;
    int j;
    for(i=2;i<=maxx;++i)
    {
        if(p[i]==0)
        {
            d[i]=1;
            for(j=2;(i*j)<=maxx;++j)
            {
                p[i*j]=1;
                if(j%i==0)
                    b[i*j]=1;
                ++d[i*j];
            }
        }
    }
    //...............................................................
    int cont;
    long long s;
    s=0;
    for(i=2;i<=maxx;++i)
    {
        if(b[i]==0)
        {
            cont=0;
            for(j=0;j<n;++j)
                if(v[j]%i==0)
                    ++cont;
            cont=cont*(cont-1);
            cont=cont/2;
            if(d[i]%2==0)
                s=s-cont;
            else
                s=s+cont;
        }
    }
    so<<((n*(n-1))/2-s);
}