2323 - Prim 001: Diferență între versiuni
De la Universitas MediaWiki
(Pagină nouă: == Cerinţa == Se dă un număr natural '''n'''. Să se afle numărul divizorilor naturali ai lui '''n^n'''. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieşire == Programul va afișa pe ecran numărul divizorilor lui '''n^n''', modulo '''59999'''. == Restricții și precizări == *'''1 ≤ n ≤ 10^13''' == Exemplu == ; Intrare :4 ; Ieșire :9 == Explicație == Numărul '''4^4=256''' are '''9''' divizori: '''1,2,4,8,16,32,64,128,25...) |
Fără descriere a modificării |
||
(Nu s-au afișat 2 versiuni intermediare efectuate de un alt utilizator) | |||
Linia 16: | Linia 16: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def | def validare_date(n): | ||
if not n.isdigit() or int(n) <= 0: | if not n.isdigit() or int(n) <= 0: | ||
return False | return False | ||
return True | return True | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
n = input("Introduceți un număr întreg pozitiv: ") | n = input("Introduceți un număr întreg pozitiv: ") | ||
if | if validare_date(n): | ||
print("\nDatele de intrare corespund restricțiilor impuse.\n") | print("\nDatele de intrare corespund restricțiilor impuse.\n") | ||
n = int(n) | n = int(n) | ||
cnt, d = 1, 2 | cnt, d = 1, 2 | ||
cn = n | cn = n | ||
while n > 1: | while n > 1: | ||
p = 0 | p = 0 | ||
Linia 44: | Linia 39: | ||
while cnt >= 59999: | while cnt >= 59999: | ||
cnt %= 59999 | cnt %= 59999 | ||
print(cnt % 59999) | print(cnt % 59999) | ||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
Linia 52: | Linia 45: | ||
</syntaxhighlight> | |||
==Explicație rezolvare== | ==Explicație rezolvare== | ||
Acest cod verifică dacă datele de intrare sunt corecte și apoi calculează numărul de divizori proprii ai unui număr întreg dat prin parcurgerea tuturor divizorilor primi ai numărului și calcularea puterilor lor. În cele din urmă, se afișează numărul de divizori proprii '''modulo 59999'''. | |||
În |
Versiunea curentă din 11 aprilie 2023 11:50
Cerinţa
Se dă un număr natural n. Să se afle numărul divizorilor naturali ai lui n^n.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieşire
Programul va afișa pe ecran numărul divizorilor lui n^n, modulo 59999.
Restricții și precizări
- 1 ≤ n ≤ 10^13
Exemplu
- Intrare
- 4
- Ieșire
- 9
Explicație
Numărul 4^4=256 are 9 divizori: 1,2,4,8,16,32,64,128,256.
Rezolvare
def validare_date(n):
if not n.isdigit() or int(n) <= 0:
return False
return True
if __name__ == '__main__':
n = input("Introduceți un număr întreg pozitiv: ")
if validare_date(n):
print("\nDatele de intrare corespund restricțiilor impuse.\n")
n = int(n)
cnt, d = 1, 2
cn = n
while n > 1:
p = 0
while n % d == 0:
n //= d
p += 1
cnt *= (p * cn + 1)
d += 1
if d * d > n:
d = n
while cnt >= 59999:
cnt %= 59999
print(cnt % 59999)
else:
print("Datele de intrare nu corespund restricțiilor impuse.")
Explicație rezolvare
Acest cod verifică dacă datele de intrare sunt corecte și apoi calculează numărul de divizori proprii ai unui număr întreg dat prin parcurgerea tuturor divizorilor primi ai numărului și calcularea puterilor lor. În cele din urmă, se afișează numărul de divizori proprii modulo 59999.