Cod sursa(job #2295401)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 3 decembrie 2018 17:16:38
Problema Pairs Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
# include <fstream>
# define DIM 1000010
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
int d[DIM],f[DIM],nr[DIM],n,x,i,j,val;
long long sol;
int main () {
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>x;
        f[x]=1;
    }
    for(i=1;i<=DIM-5;i++)
            d[i]=1;
    for(i=1;i<=DIM-5;i++){
        if(d[i]==i||d[i]==1){
            val=0;
            for(j=i;j<=DIM-5;j+=i){
                d[j]*=i;
                nr[j]++;
                if(f[j])
                    val++;
            }
            if(nr[i]%2==1)
                sol+=(1LL*val*(val-1))/2;
            else
                sol-=(1LL*val*(val-1))/2;
        }
    }
    fout<<sol<<"\n";
    return 0;
}