fbpx

Problema #3271 – PerecheCMMDC – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dă un șir de n perechi de numere naturale nenule. Să se determine perechea pentru care cel mai mare divizor comun este maxim. Dacă există mai multe asemenea perechi, se va determina aceea pentru care suma valorilor este maximă. Dacă există mai multe asemenea perechi, se va determina prima din șir.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n perechi de numere naturale.

Date de ieșire

Programul va afișa pe ecran două numere, separate printr-un spațiu, reprezentând perechea determinată.

Restricții și precizări

  • 1 ≤ n ≤ 1000
  • valorile din cele n numere citite vor fi mai mici decât 231231

Exemplu

Intrare

4
12 18
16 12
18 30
25 35

Ieșire

18 30
#include <bits/stdc++.h>
using namespace std;

int cmmdc(int a, int b){
    int ca = a, cb = b;
    while(b > 1){
        int r = a % b;
        a = b;
        b = r;
    }
    if(ca % a == cb % a)
        return a;
    return 1;
}

int n, a, b, a1, b1, max1, maxi;

int main(){
    cin >> n;
    for(int i = 1; i <= n; ++i){
        cin >> a >> b;
        int c = cmmdc(a, b);
        if(c > maxi)
            maxi = c, a1 = a, b1 = b;
        else if(c == maxi && a + b > max1)
            max1 = a + b, a1 = a, b1 = b;
    }
    cout << a1 << ' ' << b1;
    return 0;
}
Comentarii

S-ar putea sa iti placa