fbpx

Problema #319 – suma35 – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa