Pagini recente » Cod sursa (job #2340691) | Cod sursa (job #2385841) | Cod sursa (job #2860503) | Cod sursa (job #359108) | Cod sursa (job #2515985)
#include <fstream>
#include <map>
using namespace std;
ifstream in("pairs.in");
ofstream out("pairs.out");
map<int,int> m;
const int lim=1e6+3;
int nrdiv[lim];
int kk[lim];
int main()
{
long long int sol=0;
int n,a,maxx=-1;
in>>n;
for(int i=1; i<=n; ++i)
{
in>>a;
m[a]=1;
if(a>maxx)
maxx=a;
}
for(int i=2; i<=maxx; ++i)
{
for(int j=i; j<=maxx; j+=i)
{
nrdiv[j]++;
if(nrdiv[i]==1 and (j/i)%i!=0)
kk[j]++;
else if(nrdiv[i]==1 and (j/i)%i==0)
kk[j]=3-0x7ffffff;
}
int cnt=0;
for(int j=i; j<=maxx; j+=i)
if(m[j]==1)
cnt++;
if(kk[i]>=0)
{
if(kk[i]%2==1)
sol+=1LL*((cnt*(cnt-1))>>1);
else
sol-=1LL*((cnt*(cnt-1))>>1);
}
//sol+=1LL*((1-kk[i])*((cnt*(cnt-1))>>1));
}
out<<((n*(n-1))>>1)-sol;
return 0;
}