Cod sursa(job #1641237)

Utilizator toadehuPuscasu Razvan Stefan toadehu Data 8 martie 2016 21:54:59
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <iostream>
using namespace std;

int     gcd( int a, int b ) {
    int     t;

    if ( a < 0 )
        a = -a;

    if ( ! b )
        return a;

    if ( b < 0 )
        b = -b;

    if ( ! a )
        return b;

    t = 0;

    while ( ! ( ( a | b ) & 1 ) ) {
        a >>= 1;
        b >>= 1;
        ++t;
    }

    while ( ! ( a & 1 ) )
        a >>= 1;

    while ( ! ( b & 1 ) )
        b >>= 1;

    while ( a != b ) {
        if ( a > b ) {
            a -= b;

            do {
                a >>= 1;
            } while ( ! ( a & 1 ) );
        }

        else {
            b -= a;

            do {
                b >>= 1;
            } while ( ! ( b & 1 ) );
        }
    }

    return a << t;
}
int main(){
    long int n,s=0;
    ifstream fin ("fractii.in");
    ofstream fout ("fractii.out");

    fin>>n;

    for (long int i=1;i<=n;i++){
        for(long int j=1;j<=n;j++){
            int r = gcd(i,j);
            if (r==1)
                s++;
               // cout<<"("<<i<<","<<j<<") "<<"r="<<r<<"\n";
        }
    }
    fout<<s;
}