3158 - numere123
Cerința[edit | edit source]
Se citește un număr natural n
având cifrele diferite două câte două. Afișați în ordine crescătoare numerele care se pot obține din cifrele lui n
și care au același număr de cifre ca n
.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n
.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran numerele cerute, câte unul pe fiecare rând.
Restricții și precizări[edit | edit source]
1 ≤ n ≤ 1.000.000.000
n
are toate cifrele distincte
Exemplul 2[edit | edit source]
Intrare
483
Ieșire
348 384 438 483 834 843
Exemplul 2[edit | edit source]
Intrare
443
consola
Numărul trebuie să fie între 1 și 1.000.000.000 și să aibă cifre distincte.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def are_restrictii(n):
return 1 <= n <= 1000000000 and len(set(str(n))) == len(str(n))
def permuteaza_cifrele(cifre):
if len(cifre) == 1: return [cifre]
permutari = [] for i in range(len(cifre)): cifre_ramase = cifre[:i] + cifre[i + 1:] for p in permuteaza_cifrele(cifre_ramase): permutari.append([cifre[i]] + p)
return permutari
def main():
n = int(input("Introduceți un număr n cu cifre distincte: "))
if not are_restrictii(n): print("Numărul trebuie să fie între 1 și 1.000.000.000 și să aibă cifre distincte.") return
cifre_str = str(n) cifre_lista = [int(cifra) for cifra in cifre_str] toate_permutările = permuteaza_cifrele(cifre_lista)
număr_cifre_n = len(cifre_lista)
numere_rezultate = [] for permutare in toate_permutările: if permutare[0] != 0: # Evităm numerele cu zero în frunte număr = int(.join(map(str, permutare))) if len(str(număr)) == număr_cifre_n: numere_rezultate.append(număr)
numere_rezultate.sort()
print("Numerele în ordine crescătoare cu aceleași cifre ca și n:") for număr in numere_rezultate: print(număr)
if __name__ == "__main__":
main()
</syntaxhighlight>