3160 - cifre c: Difference between revisions
Pagină nouă: = Cerința = Se citesc un număr natural <code>n</code> având cifrele diferite două câte două și o cifră <code>c</code>. Afișați în ordine descrescătoare numerele formate din <code>c</code> cifre distincte care se pot obține din cifrele lui <code>n</code> și care au cifrele ordonate crescător. = Date de intrare = Programul citește de la tastatură numele <code>n</code> și <code>c</code>. = Date de ieșire = Programul va afișa pe ecran numerele cerute, câte... |
|||
Line 27: | Line 27: | ||
4618 3 | 4618 3 | ||
consola | consola | ||
Nu corespunde restricțiilor. | |||
== Rezolvare == | == Rezolvare == |
Latest revision as of 19:50, 9 December 2023
Cerința[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numele n
și c
.
Date de ieșire[edit | edit source]
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[edit | edit source]
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[edit | edit source]
Intrare
4618 3
Ieșire
468 168 148 146
Exemplul 2[edit | edit source]
Intrare
4618 3
consola
Nu corespunde restricțiilor.
Rezolvare[edit | edit source]
<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>