375
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
nfolosite î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
#include <bits/stdc++.h>
using namespace std;
ifstream cin("suma35.in");
ofstream cout("suma35.out");
int n , x[1002];
void afisare(int k)
{
for(int i = 1 ; i <= k ; i++)
cout << x[i] << " ";
cout << '\n';
}
void back(int k , int sp)
{
for(int i = x[k - 1]; i <= 5; i += 2)
{
x[k] = i;
sp += x[k];
if(sp <= n)
if(sp == n) afisare(k);
else back(k + 1 , sp);
sp -= x[k];
}
}
int main()
{
cin >> n;
x[0] = 3;
back(1 , 0);
}
Comentarii