fbpx

Problema #3159 – numere124 – 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 crescătoare numerele formate din c cifre distincte care se pot obține din cifrele lui n.

Date de intrare

Programul citește de la tastatură numerele 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

2576 2

Ieșire

25
26
27
52
56
57
62
65
67
72
75
76
#include <bits/stdc++.h>

using namespace std;

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

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

void back(int k)
{
    for(int i = 1 ; i <= cnt ; i++)
    if(!p[i])
    {
        x[k] = i;
        p[i] = 1;
        if(k == 1 && a[i] == 0);
        else
        {
            if(k == m) afisare();
            else back(k + 1);
        }
        p[i] = 0;
    }
}

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

S-ar putea sa iti placa