1030 - Sume Produse: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
Line 32: | Line 32: | ||
== Exemplul 3 == | == Exemplul 3 == | ||
; Intrare | ; Intrare | ||
: | : 2 | ||
: 1000000000 45 | |||
; Ieșire | ; Ieșire | ||
: | : Eroare: toate numerele trebuie sa fie mai mici sau egale cu 10000. | ||
<br> | <br> | ||
Revision as of 19:41, 19 March 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.
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
- 45
Exemplul 2
- Intrare
- 0
- Ieșire
- Eroare: numarul de numere trebuie sa fie intre 1 si 100000.
Exemplul 3
- Intrare
- 2
- 1000000000 45
- Ieșire
- Eroare: toate numerele trebuie sa fie mai mici sau egale cu 10000.
Rezolvare
<syntaxhighlight lang="python" line>
- 1030
def citeste_numere():
while True: n = int(input("Numar de numere: ")) if n >= 1 and n <= 100000: break else: print("Eroare: numarul de numere trebuie sa fie intre 1 si 100000.")
while True: numere = input("Numere: ").split() if len(numere) == n: numere_ok = True for numar in numere: if int(numar) > 10000: print("Eroare: toate numerele trebuie sa fie mai mici sau egale cu 10000.") numere_ok = False break if numere_ok: return numere else: print("Eroare: trebuie introduse exact", n, "numere.")
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
if __name__ == '__main__':
numere = citeste_numere() suma = calculeaza_suma_produse(numere) print(suma)
</syntaxhighlight>