Rezolvare completă PbInfo #319 suma35

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 

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema suma35:

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

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

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #319 suma35

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #319 suma35 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!