Cod sursa(job #2451361)

Utilizator AnduebossAlexandru Ariton Andueboss Data 26 august 2019 16:00:57
Problema Pairs Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
//
//  main.cpp
//  pairs
//
//  Created by Andu Andu on 26/08/2019.
//  Copyright © 2019 Andu Andu. All rights reserved.
//

#include <iostream>
#include <fstream>
#define MOD 10000
#define ll long long
using namespace std;

ifstream f ("pairs.in");
ofstream g ("pairs.out");

long long n;
long long i, j, k, x, d;
long long SOL = 1, ciur[1000001], s;
bool isOK[1000001], epp[1000001];
long long maxx = 0;
int main() {
    f>>n;
    for(int i=1;i<=n;++i) {
        f>>x;
        isOK[x]=true;
        if (x>maxx) {
            maxx = 1LL * x;
        }
    }
    for(int i=2;i<=maxx;++i) {
        if(!ciur[i]) {
            for(int j=i;j<=maxx;j+=i) {
                ++ciur[j];
                if(j % (i*i)==0)
                    epp[j]=true;
                
            }
        }
    }
    
    for(int i=2;i<=maxx;++i) {
        
        if(!epp[i]) {
            long long nr=0;
            for(int j=i;j<=maxx;j+=i) {
                if(isOK[j]) ++nr;
            }
            if(ciur[i]%2==1) s= s + 1LL * (nr*(nr-1)) /2;
            else s= s - 1LL * (nr*(nr-1)) /2;
        }
    }
    g<<1LL*(n*(n-1))/2 - s;
    return 0;
}