2924 - FactorialInnEasy: Difference between revisions
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:... |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
==Date de ieșire== | ==Date de ieșire== | ||
După ce se afișează mesajul de validitate a datelor introduse corespunzător ("Date de intrare valide" în cazul în care datele respectă cerințele; "Input-ul trebuie să fie un număr întreg" pentru cazul în care n nu este număr întreg; "Input invalid: {eroare}" în orice alt caz), programul va afișa pe ecran numărul de cifre a lui (n!)<sup>n</sup> formatat într-un mesaj, astfel: Numărul de cifre din ({n}!)^{n} este {numărul de cifre} | |||
==Restricții și precizări== | ==Restricții și precizări== | ||
* n | * n ⩽ 10<sup>6</sup> | ||
==Exemplu== | ==Exemplu== | ||
Intrare | ; Intrare | ||
: Introduceți un număr pozitiv: 3 | |||
; Ieșire | |||
Ieșire | : Date de intrare valide | ||
: Numărul de cifre din (3!)^3 este 3 | |||
==Explicație exemplu== | |||
==Explicație== | |||
(3!)<sup>3</sup>=216 | (3!)<sup>3</sup>=216 | ||
Line 40: | Line 39: | ||
return len(str(number)) | return len(str(number)) | ||
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 46: | Line 45: | ||
factorial_power = compute_factorial_power(n) | factorial_power = compute_factorial_power(n) | ||
digit_count = count_digits(factorial_power) | digit_count = count_digits(factorial_power) | ||
print("Date de intrare valide") | |||
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. | |||
Î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. | |||
Latest revision as of 05:50, 3 May 2023
Cerința[edit | edit source]
Se dă numărul natural n. Să se afișeze numărul de cifre a lui (n!)n.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul natural n.
Date de ieșire[edit | edit source]
După ce se afișează mesajul de validitate a datelor introduse corespunzător ("Date de intrare valide" în cazul în care datele respectă cerințele; "Input-ul trebuie să fie un număr întreg" pentru cazul în care n nu este număr întreg; "Input invalid: {eroare}" în orice alt caz), programul va afișa pe ecran numărul de cifre a lui (n!)n formatat într-un mesaj, astfel: Numărul de cifre din ({n}!)^{n} este {numărul de cifre}
Restricții și precizări[edit | edit source]
- n ⩽ 106
Exemplu[edit | edit source]
- Intrare
- Introduceți un număr pozitiv: 3
- Ieșire
- Date de intrare valide
- Numărul de cifre din (3!)^3 este 3
Explicație exemplu[edit | edit source]
(3!)3=216
Rezolvare[edit | edit source]
<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("Date de intrare valide") print(f"Numărul de cifre din ({n}!)^{n} este {digit_count}")
</syntaxhighlight>
Explicație cod[edit | edit source]
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.