2420 - EasyRow
Cerința
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
Programul citește de la tastatură numărul n.
Date de ieșire
Programul va afișa pe ecran numărul x, reprezentând al n-lea termen din șir.
Restricții și precizări
1 ≤ n ≤ 100.000
Exemplul 1
- Intrare
- 5
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 10
Exemplul 2
- Intrare
- -10
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line>
- 2420 - EasyRow
def numar_divizori(n):
count = 0
for i in range(1, int(n**0.5) + 1):
if n % i == 0:
if n // i == i:
count += 1
else:
count += 2
return count
n = int(input())
if n >= 1 and n <= 100000:
prev = 1
for i in range(2, n+1):
numar_x = prev + numar_divizori(i)
prev = numar_x
print(x)
print("Datele de intrare corespund restricțiilor impuse.")
else:
print("Nu au fost respectate restricțiile impuse.")
</syntaxhighlight>