Cod sursa(job #1946304)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 30 martie 2017 06:16:17
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

constexpr int maxn = 1e6 + 100;

char nr_prime_divs[maxn] = {};
int nr_mults[maxn] = {};

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

int main(){
    int n;
    f >> n;
    for(int x; n; --n) f >> x, nr_mults[x] = 1;
    memset(nr_prime_divs, 1, maxn);
    nr_prime_divs[1] = 0;

    for(int i = 1; i < maxn; ++i){
        int j = 2;
        for( ; j <= i && i*j < maxn; ++j)
            nr_prime_divs[i*j] = nr_prime_divs[i] + nr_prime_divs[j],
            nr_mults[i] += nr_mults[i*j];
        for( ; i*j < maxn; ++j)
            nr_mults[i] += nr_mults[i*j]; }

    ll rez = 0;
    for(int i = 1; i < maxn; ++i)
        rez += (nr_prime_divs[i]%2 ? -1ll : 1ll) *
            nr_mults[i] * (nr_mults[i] - 1ll) / 2ll;
    g << rez << endl;
    return 0; }