2420 - EasyRow: Difference between revisions

From Bitnami MediaWiki
No edit summary
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


def main():
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.")


if __name__ == "__main__":
      
     main()
      
      
</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">

  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>