# PBinfo #4567 – rotunde – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se dau n numere naturale. 

Un număr x se numește număr rotund dacă are cel puțin două cifre și dacă numărul obținut din  x prin interschimbarea primei jumătăți cu cea de-a doua este egal cu x. De exemplu, numărul 324324 este rotund, iar 3738 nu este rotund deoarece prin interschimbarea celor două jumătăți se obține numărul 3837. Dacă numărul are număr impar de cifre, atunci cifra din mijloc își păstrează locul la operația de interschimbare. De exemplu, din numărul 34576 prin interschimbare celor două jumătăți se obține numărul 76534, deci nu este rotund. Din numărul 23523 se obține același număr, deci este rotund.

Se cere să se determine câte dintre cele n numere citite au proprietatea că sunt rotunde.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire
Programul va afișa pe ecran numărul c, reprezentând numărul de numere citite care au proprietatea că sunt rotunde.

Restricții și precizări

1 ≤ n ≤ 100
cele n numere citite au cel puțin două cifre și sunt mai mici decât 1.000.000.000

Exemplu:
Intrare

5
45456 474 201102 235235 100100
Ieșire

3
Explicație
Dintre numerele citite 474, 235235 și 100100 sunt numere rotunde.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int main()
{
    int n,x,c=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        int nc=0,y=x,p=1,a,b,r;
        while(y>0)    ///calculez numarul de cifre ale lui x
        {
            nc++;
            y=y/10;
        }
        for(int i=1;i<=nc/2;i++)
            p=p*10;   ///calculez 10 la nc/2
        if(nc%2==0)  ///numar par de cifre
        {
            a=x/p;   ///cele 2 jumatati
            b=x%p;
            r=b*p+a; ///interchimbarea lor
        }
        else ///numar impar de cifre
        {
            a=x/p/10;   ///cele 2 jumatati
            b=x%p;
            r=(b*10+x/p%10)*p+a; ///interchimbarea lor cu atentie la cifra din mijloc
        }
        if(r==x) c++;   ///daca e rotund
    }
    cout<<c;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/4567)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4567/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4567/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
