Cod sursa(job #1542729)

Utilizator DjokValeriu Motroi Djok Data 5 decembrie 2015 16:47:23
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<bits/stdc++.h>
using namespace std;

int i,j,n,aux,c[1000005];
bool a[1000005];
long long rs;

int main()
{
  ifstream cin("pairs.in");
  ofstream cout("pairs.out");

  ios_base::sync_with_stdio(0); cin.tie(0);

  cin>>n; rs=(1LL*n*n-n)/2;
  for(i=1;i<=n;++i) cin>>aux,a[aux]=1;

  for(i=2;i<=1e6;++i)
  if(!c[i]) for(j=i;j<=1e6;j+=i) ++c[j];

  for(i=2;i*i<=1e6;++i)
   for(j=i*i;j<=1e6;j+=i*i) c[j]=0;

  for(i=2;i<=1e6;++i)
  if(c[i])
  {
    for(aux=0,j=i;j<=1e6;j+=i) if(a[j]) ++aux;

    if(c[i]&1) rs-=(1LL*aux*aux-aux)/2;
    else rs+=(1LL*aux*aux-aux)/2;
  }

  cout<<rs<<'\n';

 return 0;
}