Cod sursa(job #1410554)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 31 martie 2015 09:43:17
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<fstream>
#include<bitset>
using namespace std;
int n, i, j, maxim, x, nr;
long long sum;
bitset<1000001> f, ok;
int v[1000001];
ifstream fin("pairs.in");
ofstream fout("pairs.out");
int main(){
    fin>> n;
    for(i = 1; i <= n; i++){
        fin>> x;
        f[x] = 1;
        maxim = max(maxim, x);
    }
    for(i = 2; i <= maxim; i++){
		if(ok[i] == 0){
			nr = 0;
			for(j = i; j <= maxim; j += i){
				if(f[j] == 1){
					nr++;
				}
				if(j % (i * i) == 0){
					ok[j] = 1;
				}
				if(ok[j] == 0 && v[i] == 0){
					v[j]++;
				}
			}
			if(v[i] % 2 == 1){
				sum += nr * 1LL * (nr - 1) / 2;
			}
			else{
				sum -= nr * 1LL * (nr - 1) / 2;
			}
		}
    }
    sum = (n - 1) * 1LL * n / 2 - sum;
    fout<< sum <<"\n";
    return 0;
}