Pagini recente » Cod sursa (job #327704) | Cod sursa (job #2392422) | Cod sursa (job #1349338) | Cod sursa (job #759346) | Cod sursa (job #2985151)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
int n,x,a[1000005];
long long ans;
int main()
{
f>>n;
// ans=n*(n-1)/2;
for(int i=1;i<=n;i++)
{
f>>x;
vector<int>fct;
if(x%2==0)
fct.push_back(2);
while(x%2==0)
x/=2;
for(int d=3;d*d<=x;d+=2)
{
if(x%d==0)
fct.push_back(d);
while(x%d==0)
x/=d;
}
if(x!=1)
fct.push_back(x);
int all=(1<<fct.size()),rez=0;
for(int i=1;i<all;i++)
{
int bits=0;
int r=1;
for(int j=0;j<fct.size();j++)
if((1<<j)& i )
{
bits++;
r*=fct[j];
}
if(bits%2)
rez-=a[r];
else
rez+=a[r];
a[r]++;
}
ans+=(i-1+rez);
}
g<<ans;
return 0;
}