1030 - Sume Produse: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Dragos1234 (talk | contribs)
Line 32: Line 32:
== Exemplul 3 ==
== Exemplul 3 ==
; Intrare
; Intrare
: 7
: 2
: 1000000000 45
; Ieșire
; Ieșire
: Datele corespund cerințelor.
: Eroare: toate numerele trebuie sa fie mai mici sau egale cu 10000.
: 25401600
<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>

  1. 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>