Cod sursa(job #2291424)

Utilizator raz666Razvan S raz666 Data 27 noiembrie 2018 23:04:06
Problema Fractii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream input("fractii.in");
ofstream output("fractii.out");

int binary_gcd(int u, int v)
{
  int shl = 0;

  while ( u && v && u!=v ) {
    bool eu = !(u & 1);
    bool ev = !(v & 1);

    if ( eu && ev ) {
      ++shl;
      u >>= 1;
      v >>= 1;
    }
    else if ( eu && !ev ) u >>= 1;
    else if ( !eu && ev ) v >>= 1;
    else if ( u>=v ) u = (u-v)>>1;
    else {
      int tmp = u;
      u = (v-u)>>1;
      v = tmp;
    }
  }

  return !u? v<<shl : u<<shl;
}

int main()
{
    int N, cateisba = 0;
    input >> N;
    for(int i = 1; i <= N; i++) {
        for(int j = 1; j <= N; j++) {
            if(binary_gcd(i, j) == 1)
                cateisba++;
        }
    }
    output << cateisba;
    return 0;
}