2924 - FactorialInnEasy: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
Pagină nouă: ==Cerința== Se dă numărul natural n. Să se afișeze numărul de cifre a lui (n!)<sup>n</sup>. ==Date de intrare== Programul citește de la tastatură numărul natural n. ==Date de ieșire== Programul va afișa pe ecran numărul de cifre a lui (n!)<sup>n</sup>. ==Restricții și precizări== * n ≤ 106 ==Exemplu== Intrare 3 Ieșire 3 ==Explicație== (3!)<sup>3</sup>=216 ==Rezolvare== <syntaxhighlight lang="python"> def validate_input(n: str) -> int: try:...
 
Cata (talk | contribs)
No edit summary
Line 6: Line 6:


==Date de ieșire==
==Date de ieșire==
Programul va afișa pe ecran numărul de cifre a lui (n!)<sup>n</sup>.
După ce se afișează mesajul de validitate a datelor introduse corespunzător, programul va afișa pe ecran numărul de cifre a lui (n!)<sup>n</sup>.


==Restricții și precizări==
==Restricții și precizări==
* n 106
* n &les; 106
==Exemplu==
==Exemplu==
Intrare
; Intrare
 
: 3
3
; Ieșire
Ieșire
: 3
 
3
==Explicație==
==Explicație==
(3!)<sup>3</sup>=216
(3!)<sup>3</sup>=216
Line 40: Line 38:
     return len(str(number))
     return len(str(number))


def main():
if __name__ == "__main__":
     n = input("Introduceți un număr pozitiv: ")
     n = input("Introduceți un număr pozitiv: ")
     n = validate_input(n)
     n = validate_input(n)
Line 47: Line 45:
         digit_count = count_digits(factorial_power)
         digit_count = count_digits(factorial_power)
         print(f"Numărul de cifre din ({n}!)^{n} este {digit_count}")
         print(f"Numărul de cifre din ({n}!)^{n} este {digit_count}")
</syntaxhighlight>
==Explicație cod==
Funcția `validate_input(n: str) -> int` primește un string `n` și încearcă să îl transforme într-un număr întreg. Dacă acest lucru este posibil și numărul obținut este mai mare sau egal cu 1, atunci funcția returnează acel număr. În caz contrar, funcția aruncă o excepție și afișează un mesaj de eroare.
Funcția `compute_factorial_power(n: int) -> int` primește un număr întreg `n` și calculează valoarea expresiei `(n!)^n`, unde `n!` reprezintă factorialul lui `n`. Funcția utilizează un ciclu for pentru a calcula factorialul lui `n`, iar apoi ridică acest factorial la puterea `n`.
Funcția `count_digits(number: int) -> int` primește un număr întreg `number` și returnează numărul de cifre ale acestuia. Funcția convertește numărul într-un string și returnează lungimea acestui string.


if __name__ == "__main__":
În funcția `main`, se citește un număr pozitiv de la tastatură și se validează folosind funcția `validate_input`. Dacă numărul este valid, se calculează valoarea expresiei cerute utilizând funcția `compute_factorial_power`, iar apoi se numără cifrele acestei valori utilizând funcția `count_digits`. Rezultatul este afișat la ecran.
    main()
</syntaxhighlight>

Revision as of 06:19, 28 April 2023

Cerința

Se dă numărul natural n. Să se afișeze numărul de cifre a lui (n!)n.

Date de intrare

Programul citește de la tastatură numărul natural n.

Date de ieșire

După ce se afișează mesajul de validitate a datelor introduse corespunzător, programul va afișa pe ecran numărul de cifre a lui (n!)n.

Restricții și precizări

  • n ⩽ 106

Exemplu

Intrare
3
Ieșire
3

Explicație

(3!)3=216

Rezolvare

<syntaxhighlight lang="python"> def validate_input(n: str) -> int:

   try:
       n = int(n)
       if n < 1:
           raise ValueError("Input-ul trebuie să fie un număr întreg")
       return n
   except ValueError as e:
       print(f"Input invalid: {e}")

def compute_factorial_power(n: int) -> int:

   factorial = 1
   for i in range(2, n+1):
       factorial *= i
   return factorial ** n

def count_digits(number: int) -> int:

   return len(str(number))

if __name__ == "__main__":

   n = input("Introduceți un număr pozitiv: ")
   n = validate_input(n)
   if n:
       factorial_power = compute_factorial_power(n)
       digit_count = count_digits(factorial_power)
       print(f"Numărul de cifre din ({n}!)^{n} este {digit_count}")

</syntaxhighlight>

Explicație cod

Funcția `validate_input(n: str) -> int` primește un string `n` și încearcă să îl transforme într-un număr întreg. Dacă acest lucru este posibil și numărul obținut este mai mare sau egal cu 1, atunci funcția returnează acel număr. În caz contrar, funcția aruncă o excepție și afișează un mesaj de eroare.

Funcția `compute_factorial_power(n: int) -> int` primește un număr întreg `n` și calculează valoarea expresiei `(n!)^n`, unde `n!` reprezintă factorialul lui `n`. Funcția utilizează un ciclu for pentru a calcula factorialul lui `n`, iar apoi ridică acest factorial la puterea `n`.

Funcția `count_digits(number: int) -> int` primește un număr întreg `number` și returnează numărul de cifre ale acestuia. Funcția convertește numărul într-un string și returnează lungimea acestui string.

În funcția `main`, se citește un număr pozitiv de la tastatură și se validează folosind funcția `validate_input`. Dacă numărul este valid, se calculează valoarea expresiei cerute utilizând funcția `compute_factorial_power`, iar apoi se numără cifrele acestei valori utilizând funcția `count_digits`. Rezultatul este afișat la ecran.