# PBinfo #319 – suma35 – Rezolvare C++

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

## Enunț

Cerinţa
Se dă un număr natural nenul n. Să se determine toate modalităţile distincte de descompunere a numărului n în sumă de 3 şi 5.

Date de intrare
Fişierul de intrare suma35.in conţine pe prima linie numărul n.

Date de ieşire
Fişierul de ieşire suma35.out va conţine, în ordine lexicografică, toate modalităţile de descompunere a lui n în suma de 3 şi 5. Elementele fiecărei descompuneri vor fi scrie pe câte o linie a fişierului şi separate printr-un spaţiu.

Restricţii şi precizări

1 ≤ n ≤ 1000
pentru fiecare dintre valorile lui n folosite în fişierele de test există cel puţin o soluţie
în fiecare descompunere elementele vor fi aranjate crescător

Exemplu:
suma35.in

40
suma35.out

3 3 3 3 3 3 3 3 3 3 5 5 
3 3 3 3 3 5 5 5 5 5 
5 5 5 5 5 5 5 5

## Cod sursă C++

```cpp
#include <fstream>
#include <iostream>
using namespace std;
int x[1000], n;
ifstream fin("suma35.in");
ofstream fout("suma35.out");
void afisare(int k){
	for(int i=1;i<=k;++i)
		fout << x[i] << " ";
	fout << "\n";
}
void back(int k, int s){
	for(int i=1 ; i<=2 ; ++i)
	{
		x[k]=i==1?3:5;
		if(x[k]>=x[k-1])
			if(s+x[k]<=n)
				if( s+x[k] == n )
					afisare(k);
				else
					back(k+1, s+x[k]);
	}
}
int main(){
	fin>>n;
	back(1,0);
	return 0;
}
```

## Resurse

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