1030 - Sume Produse: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Dragos1234 (talk | contribs)
Line 39: Line 39:
#1030
#1030
def citeste_numere():
def citeste_numere():
     n = int(input("Numar de numere: "))
     while True:
     numere = input("Numere: ").split()
        n = int(input("Numar de numere: "))
    return 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):
def calculeaza_suma_produse(numere):

Revision as of 19:37, 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 va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul P , reprezentând produsul primelor n pătrate perfecte nenule, în caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor."

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


Exemplul 2

Intrare
16
Ieșire
Datele introduse nu corespund cerințelor.


Exemplul 3

Intrare
7
Ieșire
Datele corespund cerințelor.
25401600


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>