Cod sursa(job #3233327)

Utilizator MirceaDonciuLicentaLicenta Mircea Donciu MirceaDonciuLicenta Data 2 iunie 2024 23:26:57
Problema Descompuneri Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

void findCompositions(int N, int start, vector<int>& current, vector<vector<int>>& results) {
    if (N == 1) {
        current.push_back(1);
        results.push_back(current);
        current.pop_back();
        return;
    }

    for (int i = start; i <= N; ++i) {
        if (N % i == 0) {
            current.push_back(i);
            findCompositions(N / i, i, current, results);
            current.pop_back();
        }
    }
}

int main() {
    ifstream infile("desc.in");
    ofstream outfile("desc.out");

    long long N;
    int K;
    infile >> N >> K;

    vector<vector<int>> results;
    vector<int> current;

    findCompositions(N, 2, current, results);

    sort(results.begin(), results.end());

    outfile << results.size() << endl;
    if (K <= results.size()) {
        for (int num : results[K - 1]) {
            outfile << num << " ";
        }
        outfile << endl;
    }

    infile.close();
    outfile.close();

    return 0;
}