Cod sursa(job #2604289)

Utilizator LorenaMariaHantig Lorena LorenaMaria Data 22 aprilie 2020 12:58:08
Problema Pairs Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
using namespace std;
ifstream in("pairs.in");
ofstream out("pairs.out");
int m,maxi,ok[1000005],nr[1000005];
long long n,k,s;
bool f[1000005],p[1000005];
int main()
{ in>>n;
  for(int i=1;i<=n;i++)
    in>>m,f[m]=1,maxi=max(maxi,m);
  for(int i=2;i<=1000000;i++)
    if(!p[i])
    { nr[i]=1;
      ok[i]=0;
      for(int j=2*i;j<=1000000;j+=i)
      { p[j]=1;
        nr[j]++;
        if((j/i)%i==0)
           ok[j]=1;
      }
    }
  for(int i=2;i<=maxi;i++)
  { if(ok[i])
       continue;
    k=0;
    for(int j=i;j<=maxi;j+=i)
      k+=f[j];
    if(nr[i]%2==1)
       s+=1LL*k*(k-1)/2;
    else
       s-=1LL*k*(k-1)/2;
  }
  out<<1LL*n*(n-1)/2-s;
  in.close();
  out.close();
  return 0;
}