Cod sursa(job #2181569)

Utilizator robx12lnLinca Robert robx12ln Data 21 martie 2018 19:00:41
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
const int DIM = 16;
int Cnt, Sign, N, P[DIM + 5], F[DIM + 5];
long long Sol;
int main(){
    fin >> N;
    for( int i = 1; i <= N; i++ ){
        int x; fin >> x;
        F[x] = 1;
    }
    for( int i = 2; i <= DIM; i++ ){
        if( P[i] != 0 )
            continue;
        P[i] = 1;
        for( int j = i + i ; j <= DIM; j += i )
            P[j]++;
    }
    for( int i = 2; i * i <= DIM; i++ )
        for( int j = i * i; j <= DIM; j += i * i )
            P[j] = 0;
    Sol = 1LL * N * (N - 1) / 2;
    for( int i = 2; i <= DIM; i++ ){
        if( P[i] ==  0 )
            continue;
        Cnt = 0; Sign = ( ( P[i] & 1 ) == 1 ) ? -1 : 1;
        for( int j = i; j <= DIM; j += i )
            Cnt += F[j];
        Sol += 1LL * Sign * Cnt * (Cnt - 1) / 2;
    }
    fout << Sol << "\n";
    return 0;
}