Cod sursa(job #773356)

Utilizator misinoonisim necula misino Data 1 august 2012 15:30:40
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<fstream>
using namespace std;

ifstream f("pairs.in");
ofstream g("pairs.out");
long long n,i,j,sol,maxi,x,nr,d[1000001];
bool v[1000001];
int main()
{f>>n;
sol=n*(n-1)/2;
for(i=1;i<=n;++i)
{f>>x;
if(x>maxi)
	maxi=x;
v[x]=1;
}
for(i=2;i<=maxi;++i)
	if(!d[i])
		for(j=i;j<=maxi;j+=i)
			d[j]++;
for(i=2;i*i<=maxi;++i)
	for(j=i*i;j<=maxi;j+=i*i)
		d[j]=-1;
for(i=2;i<=maxi;++i)
	if(d[i]!=-1)
	{nr=0;
	for(j=i;j<=maxi;j+=i)
		if(v[j])
			++nr;
	if(d[i]%2==0)
		sol+=nr*(nr-1)/2;
	else
		sol-=nr*(nr-1)/2;
	}
g<<sol<<'\n';
return 0;
}