4250 - Inlocuire 10: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: = Cerința = Se dă un tablou cu <code>n</code> elemente, numere naturale mai mari decât <code>1</code>. Să se înlocuiască fiecare element din tablou cu produsul dintre suma divizorilor săi și numărul său de divizori și apoi să afișeze elementele din tabloului de la dreapta la stânga. Se vor defini și apela următoarele subprograme: * <code>citire</code>, care citește de la tastatură valoarea lui <code>n</code> și cele <code>n</code> elemente ale tabloului *...
 
Line 30: Line 30:


Output:
Output:
 
[21, 252, 96, 12, 234, 234, 16]
21 252 96 12 234 234 16


== Exemplul 2 ==
== Exemplul 2 ==

Revision as of 19:16, 9 December 2023

Cerința

Se dă un tablou cu n elemente, numere naturale mai mari decât 1. Să se înlocuiască fiecare element din tablou cu produsul dintre suma divizorilor săi și numărul său de divizori și apoi să afișeze elementele din tabloului de la dreapta la stânga.

Se vor defini și apela următoarele subprograme:

  • citire, care citește de la tastatură valoarea lui n și cele n elemente ale tabloului
  • afisare, care afișează pe ecran elementele tabloului printr-o parcurgere de la dreapta la stânga, separate prin exact un spațiu
  • suma_div, care determină suma divizorilor unui unui număr dat
  • nr_div, care determină numărul divizorilor unui unui număr dat

În programele C/C++ nu se vor folosi variabile globale.

Date de intrare

Se citește de la tastatură numărul n, iar apoi cele n elemente ale tabloului.

Date de ieșire

Se vor afișa pe ecran elementele tabloului după modificarea cerută, separate prin exact un spațiu.

Restricții și precizări

  • 1 ≤ n ≤ 1000
  • elementele tabloului vor fi mai mici decât 10.000

Exemplul 1

Input:

7

7 18 18 5 14 20 4

Output: [21, 252, 96, 12, 234, 234, 16]

Exemplul 2

Input:

0

7 18 18 5 14 20 4

Output:

Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.

Rezolvare

<syntaxhighlight lang="python3" line="1"> def validate_input_restrictions(n, tablou):

   if not 1 <= n <= 1000:
       print("Restricții neîndeplinite pentru n. Introduceți un număr între 1 și 1000.")
       return False   
   if any(x <= 1 or x >= 10000 for x in tablou):
       print("Elementele tabloului trebuie să fie mai mari decât 1 și mai mici decât 1.000.000.000.")
       return False
   return True

def citire():

   n = int(input("Introduceți numărul n="))
   print("Introduceți elemente vector")
   vector = list(map(int, input().split()))
   return n,vector

def afisare(vector):

   print(vector[::-1])

def suma_div(x):

   suma=x+1
   div = 2
   while div <= x/2:
       if x%div == 0:
           suma+=div
       div+=1
   return suma

def nr_div(x):

   nr=2
   div = 2
   while div <= x/2:
       if x%div == 0:
           nr+=1
       div+=1
   return nr

def inloc(vector):

   for i in range(len(vector)):
       aux=suma_div(vector[i])*nr_div(vector[i])
       vector[i]=aux
   return vector


def main():

   n, tablou = citire()
   if not validate_input_restrictions(n, tablou):
       return
   tablou=inloc(tablou)
   afisare(tablou)

if __name__ == "__main__":

   main()

</syntaxhighlight>