fbpx

Problema #3160 – cifre_c – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se citesc un număr natural n având cifrele diferite două câte două și o cifră c. Afișați în ordine descrescătoare numerele formate din c cifre distincte care se pot obține din cifrele lui n și care au cifrele ordonate crescător.

Date de intrare

Programul citește de la tastatură numele n și c.

Date de ieșire

Programul va afișa pe ecran numerele cerute, câte unul pe fiecare rând.

Restricții și precizări

  • 1 ≤ n ≤ 1.000.000.000, 1 < c < 9
  • n are cifrele distincte
  • c este mai mic decât numărul de cifre ale lui n

Exemplu

Intrare

4618 3

Ieșire

468
168
148
146
#include <bits/stdc++.h>

using namespace std;

int n , m , x[30] , cnt , p[30] , c , a[30];

int afisare()
{
    for(int i = 1 ; i <= c ; i++)
        cout << a[x[i]];
    cout << '\n';
}

void back(int k)
{
    for(int i = cnt; i >= x[k - 1] + 1 ; i--)
    {
        x[k] = i;
        if(k == 1 && a[i] == 0);
        else
        {
            if(k == c) afisare();
            else back(k + 1);
        }
    }
}

int main()
{
    cin >> n >> c;
    while(n != 0)
    {
        a[++cnt] = n % 10;
        n /= 10;
    }
    sort(a + 1 , a + cnt + 1);

    back(1);
}
Comentarii

S-ar putea sa iti placa