Rezolvare completă PbInfo #201 SubmDiv

Cerinţa

Să se determine toate submulţimile cu m elemente ale mulţimii divizorilor unui număr natural x dat.

Date de intrare

Fişierul de intrare submdiv.in conţine pe prima linie numerele x şi m,cu semnificaţia din enunţ.

Date de ieşire

Fişierul de ieşire submdiv.out va conţine pe fiecare linie câte o submulţime determinată. Aceste submulţimi for fi afişate în ordine lexicografică. Pentru fiecare submulţime se vor afişa elementele în ordine crescătoare, separate printr-un spaţiu.

Restricţii şi precizări

  • 1 ≤ m ≤ 6
  • 1 ≤ x ≤ 1000
  • dacă nu există soluţie, pe prima linie a fişierului submdiv.out se va afişa mesajul fara solutie

Exemplu

submdiv.in

45 4

submdiv.out

1 3 5 9 
1 3 5 15 
1 3 5 45 
1 3 9 15 
1 3 9 45 
1 3 15 45 
1 5 9 15 
1 5 9 45 
1 5 15 45 
1 9 15 45 
3 5 9 15 
3 5 9 45 
3 5 15 45 
3 9 15 45 
5 9 15 45 

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 SubmDiv:

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

ifstream fin("submdiv.in");
ofstream fout("submdiv.out");

int n,X,x[100],v[100],m;
int nrsol;
void afis(int n){
    nrsol ++;
    for(int i=1;i<=n;++i)
        fout << v[x[i]] << " ";
    fout << "
";
}

void back(int k){
    for(int i=x[k-1]+1;i<=n;++i){
        x[k] = i;
        if(k==m)
            afis(k);
        else
            back(k+1);
    }
}

int main(){
    fin >> X >> m;
    n = 0;
    for(int i=1;i<=X;++i)
        if(X%i==0)
            v[++n] = i;
    back(1);
    if(nrsol==0)
        fout << "fara solutie";
    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 #201 SubmDiv

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #201 SubmDiv 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!