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 231
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; }