0309 – Permutare

From Bitnami MediaWiki
Revision as of 19:03, 30 April 2023 by Petras.du.ioana (talk | contribs) (Am creat de la zero.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Sursa: [1]


Enunt

Se numeşte permutare a unei mulţimi finite orice rearanjare a tuturor elementelor acelei mulţimi.

Cerinţa

Se dă un şir cu n elemente, numere naturale. Să se verifice dacă reprezintă o permutare a mulţimii {1,2,...,n}.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului, separate prin spaţii.

Date de ieșire

Programul afișează pe ecran mesajul DA, dacă şirul reprezintă o permutare a mulţimii {1,2,...,n}, respectiv NU în caz contrar.Programul va afişa pe ecran numărul de cifre ale numărului citit.

Restricţii şi precizări

  • 1 ≤ n ≤ 100

Exemplu 1

Intrare
5
2 5 4 3 1
Ieșire
DA

Exemplu 2

Intrare
5
2 5 4 3 9
Ieșire
NU

Rezolvare

<syntaxhighlight lang="python" line>

  1. Citim numarul de elemente din multime si verificam ca este intre 1 si 100 inclusiv.

while True:

   nr_elemente = int(input("Introduceti numarul de elemente din multime (1-100): "))
   if 1 <= nr_elemente <= 100:
       break
   print("Numarul introdus nu este valid. Va rugam sa incercati din nou.")
  1. Citim sirul de numere si verificam ca fiecare numar este intre 1 si numarul dat inclusiv.

while True:

   multime = list(map(int, input(f"Introduceti {nr_elemente} numere separate prin spatii: ").split()))
   if all(1 <= element <= nr_elemente for element in multime):
       break
   print("Sirul introdus nu reprezinta o permutare a multimii {1, 2, ..., n}. Va rugam sa incercati din nou.")
  1. Verificam daca sirul dat are lungimea specificata si contine toate elementele multimii {1, 2, ..., nr_elemente}, precum si ca toate elementele sunt distincte.

if len(multime) == nr_elemente and len(set(multime)) == nr_elemente:

   print("DA")

else:

   print("NU")

print("Datele sunt introduse corect.")

</syntaxhighlight>