# PBinfo #1001 – Rotund – Rezolvare C++

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

## Enunț

Spunem că un număr natural x este rotund dacă există un număr natural nenul k, mai mic strict decât numărul de cifre ale lui x, astfel încât prin permutarea circulară a cifrelor numărului cu k poziţii la dreapta, să se obţină numărul iniţial x.

Cerinţa
Se dă un şir cu n elemente, numere naturale. câte elemente din șir sunt rotunde, și care sunt acestea.

Se va defini şi apela subprogramul rotund care verifică dacă un număr natural, transmis ca parametru, este rotund.

Date de intrare
Pe prima linie a fişierului rotund.in se află numărul n, iar pe a doua linie n numere naturale.

Date de ieşire
Prima linie a fişierului rotund.out va conține numărul de elemente rotunde din șirul dat, iar linia a doua aceste elemente, în ordinea din șirul dat, separate prin exact un spațiu. Dacă în șirul dat nu se află numere rotunde, în fișierul de ieșire se va numai scrie valoarea 0.

Restricţii şi precizări

1 ≤ n ≤ 50
elementele şirului vor avea cel mult 10 cifre

Exemplu:
rotund.in

5
12 3232 123 144144 77
rotund.out

3
3232 144144 77

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("rotund.in");
ofstream fout("rotund.out");
bool rotund(int n)
{
	int m = n , k = 0, x[15];
	do
	{
		x[++k] = m % 10;
		m /= 10;
	}
	while(m != 0);
	for(int i = 1 , j = k ; i < j ; i ++, j --)
	{
		m = x[i], x[i] = x[j] , x[j] = m;
	}
	for(int kk = 1 ; kk <= k / 2 ; kk ++)
	{
		m = x[k];
		for(int i = k ; i > 1 ; i --)
			x[i] = x[i-1];
		x[1] = m;
		m = 0;
		for(int i = 1 ; i <= k ; i ++)
			m = 10 * m + x[i];
		if(m == n)
			return true;
	}
	return false;
}
int main()
{
	int n , x , m = 0 , v[55];
	fin >> n;
	while(n > 0)
	{
		fin >> x;
		if( rotund(x) )
			v[m++] = x;
		n --;
	}
	fout << m << endl;
	for(int i = 0 ; i < m ; i ++)
		fout << v[i] << " ";
	return 0;
}
```

## Resurse

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