2420 - EasyRow: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == 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 ; I...
 
No edit summary
Line 11: Line 11:
: 5
: 5
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele de intrare corespund restricțiilor impuse.
: 10
: 10
<br>
<br>
Line 28: Line 28:
def numar_divizori(n):
def numar_divizori(n):
     count = 0
     count = 0
     for i in range(1, int(n**0.5) + 1):
     for i in range(1, n + 1):
         if n % i == 0:
         if n % i == 0:
             if n // i == i:
             count += 1
                count += 1
            else:
                count += 2
     return count
     return count


n = int(input())
def n_termen(n):
    if n == 1:
        return 1
    else:
        previous_termen = n_termen(n - 1)
        return previous_termen + numar_divizori(n)


if n >= 1 and n <= 100000:
def main():
     prev = 1
    n = int(input("Introduceti n: "))
    for i in range(2, n+1):
     if n >= 1:
         numar_x = prev + numar_divizori(i)
        termen = n_termen(n)
         prev = numar_x
         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.")


    print(x)
if __name__ == "__main__":
    print("Datele de intrare corespund restricțiilor impuse.")
     main()
else:
   
     print("Nu au fost respectate restricțiile impuse.")
</syntaxhighlight>
</syntaxhighlight>

Revision as of 20:56, 13 March 2023

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 de intrare corespund restricțiilor impuse.
10


Exemplul 2

Intrare
-10
Ieșire
Datele de intrare nu corespund restricțiilor impuse.



Rezolvare

<syntaxhighlight lang="python" line>

  1. 2420 - EasyRow

def numar_divizori(n):

   count = 0
   for i in range(1, n + 1):
       if n % i == 0:
           count += 1
   return count

def n_termen(n):

   if n == 1:
       return 1
   else:
       previous_termen = n_termen(n - 1)
       return previous_termen + numar_divizori(n)

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

if __name__ == "__main__":

   main()
   

</syntaxhighlight>