274
Cerința
Se citesc două cifre diferite c1
și c2
(nenule). Afișați în ordine crescătoare toate numerele care conțin exact c1
cifre egale cu c2
și c2
cifre egale cu c1
.
Date de intrare
Programul citește de la tastatură cifrele c1
și c2
separate printr-un spațiu.
Date de ieșire
Programul va afișa pe ecran numerele cerute, câte unul pe un rând.
Restricții și precizări
1 ≤ c1, c2 ≤ 9
c1 ≠ c2
Exemplu
Intrare
2 3
Ieșire
22233 22323 22332 23223 23232 23322 32223 32232 32322 33222
Explicație
S-au afișat în ordine crescătoare toate numerele cu 2
cifre de 3
și 3
cifre de 2
.
#include <bits/stdc++.h> using namespace std; int n , m , x[30]; int afisare() { for(int i = 1 ; i <= n + m ; i++) if(x[i] == -1) cout << n; else cout << m; cout << '\n'; } int valid(int k) { int c0 = 0 , c1 = 0; for(int i = 1 ; i <= k ; i++) if(x[i] == -1) c0++; else c1++; if(c0 <= m && c1 <= n) return 1; else return 0; } void back(int k) { for(int i = -1 ; i <= 1 ; i += 2) { x[k] = i; if(valid(k)) { if(k == n + m) afisare(); else back(k + 1); } } } int main() { cin >> n >> m; if(n > m) swap(n , m); back(1); }
Comentarii