Cod sursa(job #572593)

Utilizator S7012MYPetru Trimbitas S7012MY Data 5 aprilie 2011 14:23:25
Problema Pairs Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#define DN 100005
using namespace std;

static inline int gcd(int u, int v){
    if(u == v)
        return v;
    if(0==u)
        return v;
    if(0==v)
        return u;
    if(0==(u&1)){
        if(0==(v&1))
            return (gcd((u>>1), (v>>1))<<1);
        else
            return  gcd(u>>1, v);
    }
    else if(0==(v&1))
        return gcd(u, (v>>1));
    else{
        if(u>=v)
            return gcd(((u-v)>>1), v);
        else
            return gcd(((v-u)>>1), u);
    }
}

int main()
{
    ifstream f("pairs.in");
    ofstream g("pairs.out");
    int n,v[DN],i,j,rez=0;
    f>>n;
    for(i=1; i<=n; ++i) f>>v[i];
    for(i=1; i<n; ++i) for(int j=i+1; j<=n; ++j) if(1==gcd(v[i],v[j]) ) ++rez;
    g<<rez;
    return 0;
}