Cod sursa(job #109877)

Utilizator ada_sAda-Mihaela Solcan ada_s Data 25 noiembrie 2007 12:52:21
Problema Pairs Scor 20
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasa a 10-a Marime 0.81 kb
#include <fstream>

std::ifstream f1("pairs.in");
std::ofstream f2("pairs.out");

void desc(long x, long fact[1100], long &nrf);

int main()
{
	long perechi, n, i, j, k, m[1000100], fact[1100], nrf;
	bool corect;
	f1>>n;
	for (i=0; i<n; i++)
	{
		f1>>m[i];
	}//for i
	perechi=0;
	for (i=0; i<(n-1); i++)
	{
		desc(m[i], fact, nrf);
		for (j=i+1; j<n; j++)
		{
			corect=1;
			k=0;
			while ((corect)&&(k<nrf))
			{
				if ((m[j]%fact[k])==0)
					corect=0;
				else
					k++;
			}//while
			if (corect)
				perechi++;
		}//for j
	}//for i
	f2<<perechi;
	f1.close();
	f2.close();
	return 0;
}//main

void desc(long x, long fact[1100], long &nrf)
{
	long d=3;
	nrf=0;
	if ((x%2)==0)
		fact[nrf++]=2;
	while ((x%2)==0)
		x/=2;
	while (x>1)
	{
		if ((x%d)==0)
			fact[nrf++]=d;
		while ((x%d)==0)
			x/=d;	
	  d+=2;	
	}//while
}//desc