Cod sursa(job #109848)

Utilizator BloodRainBurceanu Gabriel BloodRain Data 25 noiembrie 2007 12:50:33
Problema Pairs Scor 20
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 11-12 Marime 0.76 kb
#include<fstream.h>
long gcd(long u, long v)
{
    long shift;

    if (u == 0 || v == 0)
      return u | v;

    for (shift = 0; ((u | v) & 1) == 0; ++shift) {
        u >>= 1;
        v >>= 1;
    }

    while ((u & 1) == 0)
      u >>= 1;

    do {
        while ((v & 1) == 0)  
          v >>= 1;
        if (u <= v) {
            v -= u;
        } else {
            long diff = u - v;
            u = v;
            v = diff;
        }
        v >>= 1;
    } while (v != 0);

    return u << shift;
}
int main()
{
long v[100001],i,j,n,number=0;
ifstream in("pairs.in");
in>>n;
for(i=1;i<=n;i++)
	in>>v[i];
in.close();

for(i=1;i<n;i++)
	for(j=i+1;j<=n;j++)
		if(gcd(v[i],v[j])==1)
			number++;
			

ofstream out("pairs.out");
out<<number<<"\n";
out.close();
return 0;
}