Cod sursa(job #2692242)

Utilizator tigaieNedelcu Ioan-Andrei tigaie Data 1 ianuarie 2021 21:01:17
Problema Algoritmul lui Euclid Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <bits/stdc++.h>
std::ifstream in("euclid2.in");
std::ofstream out("euclid2.out");

int gcd(int a,int b,int d)
{
    if(a == b)
        return a * pow(2,d);
    if(a%2 == 0 && b%2 == 0)
        gcd(a/2,b/2,d+1);
    else
        if(a%2 == 1 && b%2 == 0)
            gcd(a,b/2,d);
        else
            if(a%2 == 0 && b%2 == 1)
                gcd(a/2,b,d);
            else
                if(a%2 == 1 && b%2 == 1)
                        gcd(abs(b-a)/2,std::min(a,b),d);
}

int main()
{
    int n,a,b;
    in >> n;
    while(n --> 0)
    {
        in >> a >> b;
        out << gcd(a,b,0) << "\n";
    }
    return 0;
}