3329 - NumarareAnagrame: Difference between revisions

From Bitnami MediaWiki
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...
 
 
(One intermediate revision by the same user not shown)
Line 5: Line 5:
== Date de ieșire ==  
== Date de ieșire ==  
Programul va afișa pe ecran numărul '''cuvant''', reprezentând numărul cerut.
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."'''.
Î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 corespund restricțiilor impuse."'''
== Restricţii şi precizări ==
== Restricţii şi precizări ==
* cuvântul dat va avea cel mult 20 de litere;
* cuvântul dat va avea cel mult 20 de litere;
== Exemplu 1 ==
== Exemplul 1 ==
; Intrare
; Intrare
  ababa
  ababa
; Ieșire
; Ieșire
Datele de intrare corespund restricțiilor impuse.
  10
  10
<br>
 
== Exemplu 2 ==
==Explicatie==
Cele 10 cuvinte sunt: aaabb, aabab, aabba, abaab, ababa, abbaa, baaab, baaba, babaa, bbaaa.
 
== Exemplul 2 ==
; Intrare
; Intrare
  mucopolizaharidozelor
  mucopolizaharidozelor
Line 35: Line 39:


if __name__ == "__main__":
if __name__ == "__main__":
     cuvant = input("Introduceți cuvântul: ")
     cuvant = input()


     if cuvant.isalpha() and cuvant.islower() and len(cuvant) <= 20:
     if cuvant.isalpha() and cuvant.islower() and len(cuvant) <= 20:
         rezultat = numar_anagrame(cuvant)
         rezultat = numar_anagrame(cuvant)
        print("Datele de intrare corespund restricțiilor impuse.")
         print(rezultat)
         print(rezultat)
     else:
     else:
         print("Datele de intrare nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>
</syntaxhighlight>
==Explicatie==
Cele 10 cuvinte sunt: aaabb, aabab, aabba, abaab, ababa, abbaa, baaab, baaba, babaa, bbaaa.

Latest revision as of 19:24, 4 January 2024

Cerinţa[edit | edit source]

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[edit | edit source]

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

Date de ieșire[edit | edit source]

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 corespund restricțiilor impuse."

Restricţii şi precizări[edit | edit source]

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

Exemplul 1[edit | edit source]

Intrare
ababa
Ieșire
Datele de intrare corespund restricțiilor impuse.
10

Explicatie[edit | edit source]

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

Exemplul 2[edit | edit source]

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


Rezolvare[edit | edit source]

<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>