Cod sursa(job #773353)

Utilizator misinozzz zzz misino Data 1 august 2012 15:25:56
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 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)
	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;
}