1030 - Sume Produse: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
Line 45: | Line 45: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#1030 | #1030 | ||
def calculeaza_suma_produse(numere): | def calculeaza_suma_produse(numere): | ||
suma = 0 | suma = 0 | ||
Line 79: | Line 56: | ||
suma += produs | suma += produs | ||
return suma | return suma | ||
def valideaza_datele(n, numere): | |||
if not (1 <= n <= 100000): | |||
print("Datele introduse nu corespund cerintelor.") | |||
return False | |||
elif len(numere) != n: | |||
print("Datele introduse nu corespund cerintelor.") | |||
return False | |||
else: | |||
for numar in numere: | |||
if int(numar) > 10000: | |||
print("Datele introduse nu corespund cerintelor.") | |||
return False | |||
return True | |||
if __name__ == '__main__': | if __name__ == '__main__': | ||
numere = | while True: | ||
n = int(input("Numar de numere: ")) | |||
numere = input("Șirul de numere: ").split() | |||
if valideaza_datele(n, numere): | |||
break | |||
print("Datele introduse corespund cerintelor.") | |||
suma = calculeaza_suma_produse(numere) | suma = calculeaza_suma_produse(numere) | ||
print(suma) | print(suma) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicatie rezolvare== | ==Explicatie rezolvare== |
Revision as of 16:05, 26 April 2023
Sursa: [1]
Cerinţa
Se dau n numere naturale, unde n este număr natural par. Să se calculeze suma produselor dintre fiecare număr din prima jumătate și fiecare număr din a doua jumătate a șirului de numere date.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieșire
Programul dat mai sus citeste de la utilizator o lista de numere și calculează suma produselor dintre toate perechile de numere din lista, unde primul număr din pereche se află în prima jumătate a listei, iar al doilea număr se află în a doua jumătate a listei.
Datele de ieșire ale programului sunt o valoare numerică reprezentând suma produselor dintre toate perechile de numere din lista, așa cum a fost descris mai sus. Această valoare este afișată la ieșirea programului.
În cazul în care datele de intrare nu corespund restricțiilor, se va afișa un mesaj de eroare pe ecran.
Restricţii şi precizări
- 1 ⩽ n ⩽ 100.000
- cele n numere citite vor fi mai mici sau egale cu 10.000
Exemplul 1
- Intrare
- 4
- 2 3 4 5
- Ieșire
- Datele introduse corespund cerintelor.
- 45
Exemplul 2
- Intrare
- 0
- 0
- Ieșire
- Datele introduse nu corespund cerintelor.
Exemplul 3
- Intrare
- 2
- 1000000000 45
- Ieșire
- Datele introduse nu corespund cerintelor.
Rezolvare
<syntaxhighlight lang="python" line>
- 1030
def calculeaza_suma_produse(numere):
suma = 0 # parcurgem toate numerele din prima jumatate a sirului for i in range(len(numere)//2): # parcurgem toate numerele din a doua jumatate a sirului for j in range(len(numere)//2, len(numere)): # calculam produsul dintre cele doua numere curente produs = int(numere[i]) * int(numere[j]) # adaugam produsul la suma totala suma += produs return suma
def valideaza_datele(n, numere):
if not (1 <= n <= 100000): print("Datele introduse nu corespund cerintelor.") return False elif len(numere) != n: print("Datele introduse nu corespund cerintelor.") return False else: for numar in numere: if int(numar) > 10000: print("Datele introduse nu corespund cerintelor.") return False return True
if __name__ == '__main__':
while True: n = int(input("Numar de numere: ")) numere = input("Șirul de numere: ").split() if valideaza_datele(n, numere): break
print("Datele introduse corespund cerintelor.") suma = calculeaza_suma_produse(numere) print(suma)
</syntaxhighlight>