3329 - NumarareAnagrame

From Bitnami MediaWiki
Revision as of 12:40, 15 November 2023 by Tita Marian (talk | contribs) (Pagină nouă: == Cerinţa == Se dă un cuvânt format numai din litere mici ale alfabetului englez. Determinați câte cuvinte distincte se pot forma cu literele sale – numărul de anagrame ale sale. == Date de intrare == Programul citește de la tastatură un cuvânt. == Date de ieșire == Programul va afișa pe ecran numărul '''cuvant''', reprezentând numărul cerut. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesa...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

Se dă un cuvânt format numai din litere mici ale alfabetului englez. Determinați câte cuvinte distincte se pot forma cu literele sale – numărul de anagrame ale sale.

Date de intrare

Programul citește de la tastatură un cuvânt.

Date de ieșire

Programul va afișa pe ecran numărul cuvant, reprezentând numărul cerut. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse.".

Restricţii şi precizări

  • cuvântul dat va avea cel mult 20 de litere;

Exemplu 1

Intrare
ababa
Ieșire
10


Exemplu 2

Intrare
mucopolizaharidozelor
Ieșire
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

<syntaxhighlight lang="python" line>

import math

def numar_anagrame(cuvant):

   lungime_cuvant = len(cuvant)
   factoriale_duplicate = 1
   for litera in set(cuvant):
       frecventa = cuvant.count(litera)
       factoriale_duplicate *= math.factorial(frecventa)
   return math.factorial(lungime_cuvant) // factoriale_duplicate

if __name__ == "__main__":

   cuvant = input("Introduceți cuvântul: ")
   if cuvant.isalpha() and cuvant.islower() and len(cuvant) <= 20:
       rezultat = numar_anagrame(cuvant)
       print(rezultat)
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>

Explicatie

Cele 10 cuvinte sunt: aaabb, aabab, aabba, abaab, ababa, abbaa, baaab, baaba, babaa, bbaaa.