291
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 distinctec
este mai mic decât numărul de cifre ale luin
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