3160 - cifre c
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. În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor".
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
Exemplul 1
Intrare
4618 3
Ieșire
468 168 148 146
Exemplul 2
Intrare
4618 3
consola
Nu corespunde restricțiilor.
Rezolvare
<syntaxhighlight lang="python3" line="1"> def verifica_restricții(n, c):
if not (1 <= n <= 1000000000 and 1 < c < 9): return False
cifre_n = set(str(n)) return len(cifre_n) == len(str(n)) and c < len(cifre_n)
def genereaza_numere(n, c):
cifre_n = sorted(str(n)) rezultat = []
def backtrack(start, path): if len(path) == c: rezultat.append(int(.join(path))) return
for i in range(start, len(cifre_n)): backtrack(i + 1, path + [cifre_n[i]])
backtrack(0, []) return rezultat
- Citirea datelor de intrare
try:
n, c = input("Introduceți un număr natural n și un număr c (separate prin spațiu): ").split() n = int(n) c = int(c)
if verifica_restricții(n, c): rezultate = genereaza_numere(n, c)
if rezultate: print("Numerele cerute (ordonate descrescător):") for rezultat in sorted(rezultate, reverse=True): print(rezultat) else: print("Nu există numere conform cerințelor.") else: print("Nu corespunde restricțiilor.")
except ValueError:
print("Introduceți numere valide.")
</syntaxhighlight>