1017 - Sum Pare Vec
Cerința[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numărul n
, iar apoi cele n
elemente ale șirului.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran numărul S
, reprezentând suma cerută.
Restricții și precizări[edit | edit source]
1 ≤ n ≤ 1000
- elementele șirului vor fi mai mici decât
1.000.000
- se recomandă folosirea metodei Divide et Impera
Exemplul 1[edit | edit source]
Intrare
6 4 1 8 4 3 5
Ieșire
16
Exemplul 2[edit | edit source]
Intrare
5 11111111111
Ieșire
Eroare: Elementul 11111111111 trebuie să fie între 1 și 1000000.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def validate_input(n):
if not (1 <= n <= 1000): print("Eroare: Numărul de elemente trebuie să fie între 1 și 1000.") exit()
def validate_element(element):
if not (1 <= element <= 1000000): print(f"Eroare: Elementul {element} trebuie să fie între 1 și 1000000.") exit()
def sum_of_even_elements(arr, start, end):
if start > end: return 0 mid = (start + end) // 2
left_sum = sum_of_even_elements(arr, start, mid - 1) right_sum = sum_of_even_elements(arr, mid + 1, end)
current_sum = 0 if arr[mid] % 2 == 0: current_sum = arr[mid]
return left_sum + right_sum + current_sum
def main():
n = int(input("Introduceți numărul de elemente: ")) validate_input(n)
arr = [] for i in range(n): element = int(input(f"Introduceți elementul {i + 1}: ")) validate_element(element) arr.append(element)
result = sum_of_even_elements(arr, 0, n - 1) print(f"Suma elementelor pare din șir: {result}")
if __name__ == "__main__":
main()
</syntaxhighlight>