Informatică, întrebare adresată de Alexrai123, 8 ani în urmă

Cerința
Se dau n numere naturale. Afișați numărul pentru care diferența în valoare absolută dintre el și oglinditul său este minimă. Dacă există mai multe asemenea numere, afișați-l pe cel mai mic.

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

Date de ieșire
Programul va afișa pe ecran numărul determinat x.

Restricții și precizări
1 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplu
Intrare

4
127 964 801 601
Ieșire

601
Explicație
oglinditul lui 127 este 721, iar diferența este 594
oglinditul lui 964 este 469, iar diferența este 495
oglinditul lui 801 este 108, iar diferența este 693
oglinditul lui 601 este 106, iar diferența este 495
Diferența minimă este 495 și se obține pentru 601


MosaicOfShadows: Nr problemă de pe pbinfo?
Alexrai123: #380 aprim1
Alexrai123: Scuze, ma uitam la alta problema ,e #2290 Oglindite
Alexrai123: Totusi, si la #380 as avea nevoie de ajutor

Răspunsuri la întrebare

Răspuns de Utilizator anonim
1

#include <iostream>

#include <cstdlib>

using namespace std;

int main()

{

   int n , x , y , ogl, dmin = 1000000000, xmin;

for(cin >> n ; n ; n --)

{

       cin >> x;

       y = x;

       ogl = 0;

       while(y)

           ogl = 10 * ogl + y % 10, y /= 10;

       if(abs(x - ogl) < dmin)

           dmin = abs(x - ogl), xmin = x;

       else

           if(abs(x - ogl) == dmin)

           if(x < xmin)

               xmin = x;

}

cout << xmin << "\n";

return 0;

}



Alexrai123: Nu merge
Utilizator anonim: Ce nu merge mai exact? Este solutia oficiala :)
Utilizator anonim: Daca vrei, iti dau solutia mea
Alexrai123: Da, te rog
Alte întrebări interesante