1148 - Exista Impare Div Imp
Cerința
Se consideră un șir cu n
elemente, numere naturale. Folosind metoda Divide et Impera, determinați suma elementelor pare din acest șir.
Date de intrare
Programul citește de la tastatură numărul n
, iar apoi cele n
elemente ale șirului.
Date de ieșire
Programul va afișa pe ecran numărul S
, reprezentând suma cerută.
Restricții și precizări
1 ≤ n ≤ 1000
- elementele șirului vor fi mai mici decât
1.000.000
- se recomandă folosirea metodei Divide et Impera
Exemplul 1
Intrare
6 4 1 8 4 3 5
Ieșire
16
Exemplul 2
Intrare
10001
Ieșire
Valoarea nu respecta conditiile. Incercati din nou.
Rezolvare
<syntaxhighlight lang="python3" line="1"> def suma_pare_divide_et_impera(arr, stanga, dreapta):
if stanga == dreapta: # Caz de bază: un singur element return arr[stanga] if arr[stanga] % 2 == 0 else 0
mijloc = (stanga + dreapta) // 2
# Calculează suma pentru fiecare jumătate suma_stanga = suma_pare_divide_et_impera(arr, stanga, mijloc) suma_dreapta = suma_pare_divide_et_impera(arr, mijloc + 1, dreapta)
# Adună rezultatele și returnează suma totală return suma_stanga + suma_dreapta
- Funcție pentru verificarea valorii lui n
def verifica_n(valoare):
return 1 <= valoare <= 1000
- Funcție pentru verificarea valorii lui x
def verifica_x(valoare):
return valoare < 1000000
- Funcție pentru citirea unui număr întreg într-un interval specificat
def citeste_numar(mesaj, functie_verificare):
while True: numar = int(input(mesaj)) if functie_verificare(numar): return numar else: print(f"Valoarea nu respecta conditiile. Incercati din nou.") exit()
- Citirea datelor de intrare
n = citeste_numar("Introduceti numarul de elemente (1 <= n <= 1000): ", verifica_n) arr = []
print("Introduceti elementele sirului (elemente < 1000000):", end=" ") for _ in range(n):
element = citeste_numar("", verifica_x) arr.append(element)
- Calcularea și afișarea rezultatului
rezultat = suma_pare_divide_et_impera(arr, 0, n - 1) print("Suma elementelor pare din sir:", rezultat) </syntaxhighlight>