1030 - Sume Produse: Diferență între versiuni

De la Universitas MediaWiki
Linia 25: Linia 25:
== Exemplul 2 ==
== Exemplul 2 ==
; Intrare
; Intrare
: 16
: 0
; Ieșire
; Ieșire
: Datele introduse nu corespund cerințelor.
: Eroare: numarul de numere trebuie sa fie intre 1 si 100000.
<br>
<br>
== Exemplul 3 ==
== Exemplul 3 ==
; Intrare
; Intrare

Versiunea de la data 19 martie 2023 19:40

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
7
Ieșire
Datele corespund cerințelor.
25401600


Rezolvare

#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)