# PBinfo #980 – Sir4 – Rezolvare C++

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

## Enunț

Se consideră şirul de numere naturale: 

1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21,...
Se grupează numerele din şir astfel încât prima grupă, numerotată cu  1, este formată din primul număr din şir (1), a doua grupă, numerotată cu 2, este formată din următoarele două numere din şir (3,5), a treia grupă, numerotată cu 3, este formată din următoarele trei numere din şir  (7,9,11),…, a n-a grupă din şir, numerotată cu n, este formată din următoarele n numere din şir, etc.

Cerinţe
Deduceţi regula după care sunt generaţi termenii şirului şi scrieţi un program care să citească numerele naturale p, n şi k şi care să determine:

a) al câtelea număr din şir are valoarea p;
b) cel mai mare număr natural palindrom care poate fi obţinut folosindu-se cifrele tuturor numerelor din grupa a n-a  a şirului dat, nu neapărat toate aceste cifre; 
c) numărul grupei cu proprietatea că suma tuturor numerelor conţinute de aceasta este egală cu numărul k, dacă există o astfel de grupă.

Date de intrare
Programul citește de la tastatură, în acestă ordine, trei numere naturale  p, n şi k.

Date de ieșire
Programul va afișa pe ecran, în această ordine:


o valoare naturală reprezentând al câtelea număr din şir are valoarea p.
cel mai mare număr natural palindrom care poate fi obţinut folosindu-se cifrele tuturor numerelor din grupa a n-a a şirului dat, nu neapărat toate aceste cifre.
numărul grupei cu proprietatea că suma tuturor numerelor conţinute de aceasta este egală cu numărul k; dacă nu există o astfel de grupă se va scrie numărul 0

Restricții și precizări

Numerele  p, n şi k sunt naturale
1 ≤ p ≤ 2.000.001, p număr natural impar
1 ≤ n ≤ 50
1 ≤ k ≤ 2.000.000.000
un număr natural este palindrom dacă este egal cu numărul obţinut prin scrierea cifrelor sale în ordine inversă
pentru rezolvarea cerinţei  a)  se acordă  40%  din punctaj, pentru cerinţa  b)  30% din punctaj şi pentru cerinţa  c)  30% din punctaj.

Exemplu:
Intrare

19 5 125
Ieșire

10
22922
5
Explicație

În şir, valoarea 19 apare pe poziţia 10, aceşti 10 termeni termeni fiind: 1,3,5,7,9,11,13,15,17,19.
Numerele din grupa a 5-a sunt scrise cu ajutorul a 1 cifră de 1, 5 cifre de 2, 1 de 3, 1 de 5, 1 de 7, 1 de 9. Ce mai mare palindrom care se poate scrie cu aceste cifre este 22922.
Grupa 5 are suma egală cu k (21+23+25+27+29=125).

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int main()
{ 
	//cerinta a)
	int p;
	cin >> p;
	cout << (p+1)/2 << endl;
	//cerinta b)
	int n;
	cin >> n;
	int x,a,b,y,i,v[10],j,cif=-1;
	a=n*n-n+1; b=n*n+n-1;
	for(i=0;i<=9;i++)
		v[i]=0;
	for(x=a;x<=b;x+=2)
	{
		y=x;
		while (y)
		{
			v[y%10]++;
			y=y/10; 
		}  
	}
	for(i=9;i>=0;i--)
		if(v[i])
		{
			if( v[i] % 2 && cif ==-1 )
				cif=i;
			for(j=1;j<=v[i]/2;j++)
				cout << i;    
		}
	if(cif!=-1)
		cout << cif;
	for(i=0;i<=9;i++)
		if(v[i])
			for(j=1;j<=v[i]/2;j++)
				cout << i;
	cout << endl;
	//cerinta c)
	long k , r;
	cin >> k;    
	r=1;
	if(k%2==0)
		r=2;
	while(r*r*r<k)
		r=r+2;
	if(r*r*r==k)
		cout << r;
    else 
		cout << 0;
	return 0;
}
```

## Resurse

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