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
#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); }