Pagini recente » Cod sursa (job #1288893) | Cod sursa (job #1200036) | Cod sursa (job #1663835) | oni2011_9_1 | Cod sursa (job #3293223)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin ("pairs.in");
ofstream cout ("pairs.out");
#define N 100000
int v[N+1], f[N+1];
int main()
{
int n,i,d,a,k,j,h,put,q,p,r;
cin >> n;
for (i=1; i<=n; i++)
cin >> v[i];
sort(v+1, v+n+1);
r=0;
for (i=1; i<=n; i++){
d=2;
a=v[i];
vector <int> prim;
while (a>1){
if (a%d==0){
prim.push_back(d);
while (a%d==0)
a/=d;
}
d++;
if (d*d>a)
d=a;
}
k=prim.size();
p=0;
for (j=1; j<(1<<k); j++){
put=1;
q=0;
for (h=0; h<k; h++)
if (j&(1<<h)){
put*=prim[h];
q++;
}
f[put]++;
if (q%2==1)
p+=f[put];
else if (q!=0)
p-=f[put];
}
r+=i-p;
}
cout << r << '\n';
return 0;
}