2420 - EasyRow: Difference between revisions
Adina Timiș (talk | contribs) No edit summary |
Adina Timiș (talk | contribs) No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 24: | Line 24: | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
#2420 - EasyRow | #2420 - EasyRow | ||
def numar_divizori(n): | def numar_divizori(n): | ||
count = 0 | count = 0 | ||
for i in range(1, n + 1): | for i in range(1, n + 1): # se parcurge intervalul [1, n] | ||
if n % i == 0: | if n % i == 0: # se verifică dacă i este divizor al lui n | ||
count += 1 | count += 1 # dacă da, se adaugă 1 la numărul total de divizori | ||
return count | return count # numărul total de divizori | ||
def n_termen(n): | def n_termen(n): | ||
Line 37: | Line 37: | ||
return 1 | return 1 | ||
else: | else: | ||
previous_termen = n_termen(n - 1) | previous_termen = n_termen(n - 1) # se calculează termenul anterior | ||
return previous_termen + numar_divizori(n) | return previous_termen + numar_divizori(n) # se calculează termenul curent adunând numărul de divizori ai lui n | ||
if __name__ == "__main__": | |||
n = int(input("Introduceti n: ")) | n = int(input("Introduceti n: ")) | ||
if n >= 1: | if n >= 1: | ||
Line 49: | Line 49: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 21:20, 23 April 2023
Cerința[edit | edit source]
Se consideră următorul șir de numere naturale: 1 3 5 8 10 14 16..., în care termenul de pe poziția i (i > 1) este egal cu cel precedent plus numărul de divizori ai lui i. Afișați al n-lea termen.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran numărul x, reprezentând al n-lea termen din șir.
Restricții și precizări[edit | edit source]
1 ≤ n ≤ 100.000
Exemplul 1[edit | edit source]
- Intrare
- 5
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 10
Exemplul 2[edit | edit source]
- Intrare
- -10
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 2420 - EasyRow
def numar_divizori(n):
count = 0 for i in range(1, n + 1): # se parcurge intervalul [1, n] if n % i == 0: # se verifică dacă i este divizor al lui n count += 1 # dacă da, se adaugă 1 la numărul total de divizori return count # numărul total de divizori
def n_termen(n):
if n == 1: return 1 else: previous_termen = n_termen(n - 1) # se calculează termenul anterior return previous_termen + numar_divizori(n) # se calculează termenul curent adunând numărul de divizori ai lui n
if __name__ == "__main__":
n = int(input("Introduceti n: ")) if n >= 1: termen = n_termen(n) print("Datele de intrare corespund restricțiilor impuse.") print(f"Termenul de pe pozitia {n} este {termen}.") else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>