3329 - NumarareAnagrame
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." iar daca se indeplinesc se afiseaza "Datele de intrare nu corespund restricțiilor impuse."
Restricţii şi precizări
- cuvântul dat va avea cel mult 20 de litere;
Exemplul 1
- Intrare
ababa
- Ieșire
Datele de intrare corespund restricțiilor impuse. 10
Explicatie
Cele 10 cuvinte sunt: aaabb, aabab, aabba, abaab, ababa, abbaa, baaab, baaba, babaa, bbaaa.
Exemplul 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()
if cuvant.isalpha() and cuvant.islower() and len(cuvant) <= 20: rezultat = numar_anagrame(cuvant) print("Datele de intrare corespund restricțiilor impuse.") print(rezultat) else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>