4250 - Inlocuire 10
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 luin
și celen
elemente ale tablouluiafisare
, care afișează pe ecran elementele tabloului printr-o parcurgere de la dreapta la stânga, separate prin exact un spațiusuma_div
, care determină suma divizorilor unui unui număr datnr_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>